求教Socket数据发送和接收的控制方法

 我来答
仍含苼0er
2017-05-07 · TA获得超过181个赞
知道小有建树答主
回答量:210
采纳率:0%
帮助的人:45.6万
展开全部
  接触了一段时间Socket异步通讯,发现自己对BeginReceive什么时候回调产生了错误的理解。之前我一直以为异步接收数据只有当Buffer被填满的时候才会回调。如果这样当服务端的Buffer大于客户端发送的数据时,客户端发送的数据就不会得到及时的处理(当Buffer填满时才处理)。这显然是不合情理的,于是我做了如下测试:   服务端代码:   客户端代码:   可以看到服务端采用异步接收的方式,每次接收不超过4个字节。客户端不限制一次发送数据的字节数。(备注:1.先运行服务端后运行客户端 2.发送数据采用ASCII编码,每个字符占用1个字节 3.Socket.ReceiveBufferSize应当大于Buffer长度,否则会得到其他结果)      1.发送数据长度与接收Buffer长度一致,接收到所有数据回调;   2.发送数据长度大于接收Buffer长度,Buffer填满时回调,数据接收完时回调;   3.发送数据长度小于接收Buffer长度,数据接收完时回调;   如果想要手动强制使BeginReceive回调,MSDN提供的方法是:   若要取消挂起的 BeginReceive,请调用 Close 方法。   
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式