日期:2014-05-18  浏览次数:21058 次

C# 使用tcpclient发送数据的同步问题 求助!!!!
client 发送一段字符串给server 大小为1M

server 收到1M的字符串后 同样发送1M的字符串给客户端


现在遇到的问题是

client每隔2s发送一次,发送了30次

server接受有时显示30次,有时确实31次

两方的tcpclient的ReceiveBufferSize和SendBufferSize都是10M,双方发送和接受用的是同步的,一次发送或者接受1M个字节存

在数组里,似乎是某次client发送了1M的数据,但是server分2次才读完,

还有就是 client发送30次之后结束调用shutdown ,server读到是空的字符串。

求 解惑 求双方如何同步

------解决方案--------------------
客户机/服务器向服务器/客户机发送数据的时候有可能一次发布全,你让它接收1M,但它可能接收了999k就返回了,就得这样:
如果返回的数据小于1M,则继续等待接收,直到各次的数据总量是1M为止。
处理完这次的数据后再处理发送的历程。

tcp协议我懂不多,它的数据是拆成一个个分组来发送的,这些分组有可能通过不同的路线,因此到的的时间有差异,receive这个函数是以返回值为准的,不是你参数的大小为准。receive(200K),不一定收到200K