环境:包的长度 200字节
一台终端向服务器发包,服务器监听端口获得并处理。
当出现压包的情况下,在调用Receive()函数时出现问题。(压包:服务器因为网络延时某个时刻得到多个包)
问题如下:
Socket类定义server对象
Receive()函数中带有参数
server.Receive(bytes, 0, server.Available, SocketFlags.None);
出现压包的时候,
我打印出server.Available大小,得到600字节
但调用完server.Receive()后返回读取字节大小显示为200字节,正好一个包的大小。
但从msdn上查得server.Available大小就应该是底层包的大小(即600字节),为什么不次读不出来。
为了解决问题,我暂时做了循环,可以读出所有字节数(如果是3个包,要分3次读)本人对server.Available的理解不是很清楚,请哪位专家指点一下。
如果可以的话,能否在SocketFlags几个可用属性中给点建议。