//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. RTC+AI|“即智”数智人创新内容生产体验,为企业降本增效再提速

    号称"史上最卷"的618年中大促落下帷幕,几大电商巨头在直播投入和短视频内容建设上持续加码,短视频+直播电商的营销模式成为618期间的主要输出. 以某美妆专场直播间为例,主播现场手 ...

  2. 【最新】Delphi XE7 绿色版下载,亲测可用!

    最后更新时间 2017-12-05. 本文整理自2ccc盒子iny的帖子 → 链接到原贴 破解 → 链接 一.绿色版介绍 绿色版除了不包含 FastReport(RAD Studio自带的FastRe ...

  3. 2023年icpc大学生程序设计竞赛-crf

    第一次在除郑轻以外的校外的地方比赛,也是第一次出市比赛,赛程也比较长.20号出发的时候遇到一些意外,不过无伤大雅,第一天热身赛平平无奇,晚上的时候补了一下前年icpc的题,一个多小时做了五题,很是自信 ...

  4. VueJs禁止页面鼠标右键、选中、调用开发者工具

    1.禁止鼠标右键操作 // 禁止鼠标右键 window.oncontextmenu = function () { return false; }; 2.禁止选中网页内容 // 禁止选中网页上内容 w ...

  5. 《最新出炉》系列入门篇-Python+Playwright自动化测试-10-标签页操作(tab)

    1.简介 标签操作其实也是基于浏览器上下文(BrowserContext)进行操作的,而且宏哥在之前的BrowserContext也有提到过,但是有的童鞋或者小伙伴还是不清楚怎么操作,或者思路有点模糊 ...

  6. idea 2021新窗口打开工程

    描述 Mac M1,IDEA 2017 有部分兼容性问题,遂对IDEA进行升级 idea 升级2021(IntelliJ IDEA 2021.3 (Community Edition)) 打开新工程, ...

  7. 青少年CTF平台-Web-POST&GET

    题目描述 一星简单题,看我如何给你过了. 启动环境,等待三十秒先喝口水. 做题过程 访问题目地址,说让我们用GET方式提交一个名称为get且值为0的变量. 在URL后面加上?get=0,回车.已经成功 ...

  8. SpringSecurity1: spring boot web 样例快速体验

    本文只讲操作实践,不讲原理,这样对于想快速搭建起一个基于SpringSecurity的Web项目的朋友们而言,比较友好.文章主要由两部分构成: 快速演示样例 所有账户和授权数据均基于内存,能在极短的时 ...

  9. 【技术积累】Linux中的命令行【理论篇】【七】

    atrm命令 命令介绍 atrm命令是Linux系统中的一个命令行工具,用于取消或删除已经安排的at命令.at命令是一种用于在指定时间执行一次性任务的工具. 命令说明 atrm命令的语法如下: atr ...

  10. Java安全之Webshell免杀

    Java安全之Webshell免杀 当遇到文件上传时,如果网站存在查杀软件,我们上传的一句话木马会被直接秒杀,这时候就需要做一下免杀,绕过查杀软件的检测. 思路 我的想法是先拆分,然后分别检验那些语句 ...