//c#不愧是全能型的语言,异步连线程都省了

class State
{

public byte[] bufferCache;

public TcpClient tcpClient;

}

...

private TcpClient tcpServer;

private TcpListener TCPListener;

TCPListener = new TcpListener(IPAddress.Parse(TCPIP), Convert.ToInt32(TCPPORT));

TCPListener.BeginAcceptTcpClient(new AsyncCallback(requestCallBack), TCPListener);

private void requestCallBack(IAsyncResult iar)
{

TcpListener listener = (TcpListener)iar.AsyncState;

tcpServer = listener.EndAcceptTcpClient(iar);

ConsoleUserColor.SetColorText(WhichWindow.LOGWindow, Color.Green, "连接成功!");

State state = new State();

state.tcpClient = tcpServer;

NetworkStream stream = tcpServer.GetStream();

if (stream.CanRead)

{

state.bufferCache = new byte[tcpServer.ReceiveBufferSize];

stream.BeginRead(state.bufferCache, 0, state.bufferCache.Length, new AsyncCallback(AsyncReadCallBack), state);

}

}

private void AsyncReadCallBack(IAsyncResult iar)//异步读取消息
{

State state = (State)iar.AsyncState;

if (state.tcpClient == null || !state.tcpClient.Connected)

return;

int ByteReads;

NetworkStream ns = state.tcpClient.GetStream();

ByteReads = ns.EndRead(iar);

if (ByteReads > 0)

{

string message = System.Text.Encoding.Default.GetString(state.bufferCache).Replace("\0", "");//得到消息

}

...

C#_TCPClient异步连接和接收消息的更多相关文章

  1. 【原创】JMS生产者和消费者【PTP异步接收消息】

    PTP模式下,异步接收消息需要定义一个MessageListener来监听,当生产者有消息要发送时会主动通知Listener去处理该消息,会调用监听的onMessage方法去处理. 首先看生产者(和同 ...

  2. socket 异步接收连接和接收数据

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. ActiveMQ基础教程(三):C#连接使用ActiveMQ消息队列

    接上一篇:ActiveMQ基础教程(二):安装与配置(单机与集群) 安装部署好集群环境:192.168.209.133:61616,192.168.209.134:61616,192.168.209. ...

  4. iOS网络编程--NSConnection的同步连接与异步连接

    // // ZFViewController.m // 0628-表单验证 // // Created by zfan on 14-6-28. // Copyright (c) 2014年 zfan. ...

  5. 消费者端的Spring JMS 连接ActiveMQ接收生产者Oozie Server发送的Oozie作业执行结果

    一,介绍 Oozie是一个Hadoop工作流服务器,接收Client提交的作业(MapReduce作业)请求,并把该作业提交给MapReduce执行.同时,Oozie还可以实现消息通知功能,只要配置好 ...

  6. 终于懂了:Delphi消息的Result域出现的原因——要代替回调函数的返回值!(MakeObjectInstance不会帮助处理(接收)消息回调函数的返回值)

    MakeObjectInstance应该不会帮助处理(接收)消息回调函数的返回值,可是有时候又确实需要这个返回值,这可怎么办呢?我是看到这段文字的时候,想到这个问题的: 当WM_PAINT不是由Inv ...

  7. 【Spring】使用Spring和AMQP发送接收消息(上)

    讲AMQP之前,先讲下传统的JMS的消息模型,JMS中主要有三个参与者:消息的生产者.消费者.传递消息的通道(队列或者主题),两种消息模型如下:通道是队列: 通道是队列: 通道是主题: 在JMS中,虽 ...

  8. 【Spring】使用Spring和AMQP发送接收消息(中)

    上篇讲了RabbitMQ连接工厂的作用是用来创建RabbitMQ的连接,本篇就来讲讲RabbitMQ的发送消息.通过RabbitMQ发送消息最简单的方式就是将connectionFactory Bea ...

  9. SignalR实现消息推送,包括私聊、群聊、在线所有人接收消息(源码)

    一.关于SignalR 1.简介:Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架.它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面, ...

  10. ROS_Kinetic_26 使用rosserial_windows实现windows与ROS master发送与接收消息

    使用rosserial_windows实现windows与ROS master发送与接收消息(适用版本hydro,indigo,jade,kinetic) 官方wiki地址汇总请参考:http://b ...

随机推荐

  1. 字符串加密DES

    提前关于加密的方式,我目前知道的有MD5,DES等等.今天写一下使用DES的代码,方便下次使用. package mocha.framework.hrbase.rest.utils; import j ...

  2. 【阅读笔记】提升example-based SISR七个技巧

    论文信息 [Seven ways to improve example-based single image super resolution]-Radu Timofte, 2016, CVPR 论文 ...

  3. Java扩展Nginx之五:五大handler(系列最核心)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<Java扩展Nginx> ...

  4. 修改docker容器端口映射

    原文地址 操作步骤如下 关闭docker systemctl stop dokcer 修改配置文件 位置一般是: /var/lib/docker/containers/containerId/host ...

  5. Llama2开源大模型的新篇章以及在阿里云的实践

    Llama一直被誉为AI社区中最强大的开源大模型.然而,由于开源协议的限制,它一直不能被免费用于商业用途.然而,这一切在7月19日发生了改变,当Meta终于发布了大家期待已久的免费商用版本Llama2 ...

  6. ch-manager.sh

    [root@dev-clickhouse1 ~]# cat ch-manager.sh #!/bin/bash ch_arr=(ch1-shard1-main ch1-shard2-sub ch2-s ...

  7. 转载【Linux中建立软raid】

    原文地址:https://www.cnblogs.com/diantong/p/10547081.html Linux内核中有一个md(multiple devices)模块在底层管理RAID设备,它 ...

  8. 小白也能搞定!Windows10上CUDA9.0+CUDNN7.0.5的完美安装教程

    前言: 为什么要在本地电脑安装 CUDA,CUDA 是什么的,用来做什么?我想,点击标题进来的小伙伴,应该都清楚这些.不管你是用来做什么,或者跟我一样为了跑 Tensorflow 的 Object D ...

  9. 一种flink 作业提交失败的情况描述与原因排查

    遇到异常 2019-12-24 16:49:59,019 INFO org.apache.flink.yarn.YarnClusterClient - Starting client actor sy ...

  10. BurpSuite设置上游代理访问内网

    转载原文 原理知道了后,开始! 拿到B的shell后,添加路由 拿到B的shell后,开启sock4 在D主机上设置好 最后成功抓到包