0
我想做一些客戶端和服務器來相互共享文件。我有一個問題,因爲TCP「消息」被合併,儘管我設置了多少字節我想發送和多少接收。TCP中的多重發送()或接收()
我看了一下,發生問題的時候,我在第一個「消息」發送一個文件名,然後(例如在新的Send())中發送文件內容。
我通過在每個接收數據包當前發送反饋消息來解決它。
有沒有更好的方法來做到這一點?
我想做一些客戶端和服務器來相互共享文件。我有一個問題,因爲TCP「消息」被合併,儘管我設置了多少字節我想發送和多少接收。TCP中的多重發送()或接收()
我看了一下,發生問題的時候,我在第一個「消息」發送一個文件名,然後(例如在新的Send())中發送文件內容。
我通過在每個接收數據包當前發送反饋消息來解決它。
有沒有更好的方法來做到這一點?
爲每條消息添加長度前綴。然後讀取一個循環,直到您收到儘可能多的字節。
[Data loss TCP IP C#]可能的重複(http://stackoverflow.com/questions/5528234/data-loss-tcp-ip-c-sharp) – CodesInChaos 2012-04-02 07:32:39
更多重複項:[1](http:// stackoverflow.com/q/8575659/445517)[2](http://stackoverflow.com/q/9895132/445517) – CodesInChaos 2012-04-02 07:33:04
我做了類似 '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