问题描述
我在做一个socket的客户端,但在接收数据包大于15000时必须分2次读,怎么能听一次读完呢?我试设置SendBufferSize,但没有用。那位高手指点一下。
解决方案
解决方案二:
你send的时候能一下全部send出去吗?
解决方案三:
可以,就是读的时候不能一次读完
解决方案四:
我曾经接收过挺大一个串包的.因为我的包有固定的格式,所以我就先strings="";然后收到串就s+=se.readToEnd();判断是否到了最后,如果到了就解析去,如没结束就等待下一个Arrived事件.我曾经试过,一个很大的包TCP过来时,由于网络等原因,不一定能全部在一个事件中全部捕获,有可能分成2-3个,而且同样的包也不一定分的相同.所以不能一次读完可能是由于Arrived事件捕获的间隔造成的吧.
解决方案五:
我做了一个测试,在服务器端sleep10秒钟,客户端就可以一次收完,但这个办法有点莫名其妙,有更好的方法吗?下面是代码System.Threading.Thread.Sleep(10000);ns.Write(byteTime,0,byteTime.Length);
解决方案六:
有没有搞错这么大的包。了解一下IP/TCP的基础吧。这么在的包。会丢包的。
解决方案七:
引用5楼zanfeng的回复:
有没有搞错这么大的包。了解一下IP/TCP的基础吧。这么在的包。会丢包的。
时间: 2025-01-18 04:50:14