长期从事计算机组装维护,网絡组建及管理对计算机硬件、操作系统安装、典型网络设备具有详细认知。
接触了一段时间Socket异步通讯发现自己对Beginbeginreceivee什么时候回调产苼了错误的理解。之前我一直以为异步接收数据只有当Buffer被填满的时候才会回调如果这样当服务端的Buffer大于客户端发送的数据时,客户端发送的数据就不会得到及时的处理(当Buffer填满时才处理)这显然是不合情理的,于是我做了如下测试:
可以看到服务端采用异步接收的方式每次接收不超过4个字节。客户端不限制一次发送数据的字节数(备注:1.先运行服务端后运行客户端 2.发送数据采用ASCII编码,每个字符占用1个字节 3.Socket.beginreceiveeBufferSize应当大于Buffer长度否则会得到其他结果)
1.发送数据长度与接收Buffer长度一致,接收到所有数据回调;
2.发送数据长度大于接收Buffer長度Buffer填满时回调,数据接收完时回调;
3.发送数据长度小于接收Buffer长度数据接收完时回调;
如果想要手动强制使Beginbeginreceivee回调,MSDN提供的方法是:
你对这个回答的评价是