2012-04-02 57 views
0

我想做一些客户端和服务器来相互共享文件。我有一个问题,因为TCP“消息”被合并,尽管我设置了多少字节我想发送和多少接收。TCP中的多重发送()或接收()

我看了一下,发生问题的时候,我在第一个“消息”发送一个文件名,然后(例如在新的Send())中发送文件内容。

我通过在每个接收数据包当前发送反馈消息来解决它。

有没有更好的方法来做到这一点?

+1

[Data loss TCP IP C#]可能的重复(http://stackoverflow.com/questions/5528234/data-loss-tcp-ip-c-sharp) – CodesInChaos 2012-04-02 07:32:39

+1

更多重复项:[1](http:// stackoverflow.com/q/8575659/445517)[2](http://stackoverflow.com/q/9895132/445517) – CodesInChaos 2012-04-02 07:33:04

+0

我做了类似 'string msg =“test”; byte [] buf = new byte [1024]; byte [] prefix = BitConverter.GetBytes(msg.Length); byte [] data = Encoding.UTF8.GetBytes(msg); Array.Copy(prefix,0,buf,0,prefix.Length);数组。 Array.Copy(data,0,buf,prefix.Length,data.Length); (buf);' 但我不知道如何接收邮件。 – deem 2012-04-02 09:33:51

回答

1

为每条消息添加长度前缀。然后读取一个循环,直到您收到尽可能多的字节。