我一直在從事一個項目,我從客戶端發送字符串到C#服務器。 我的問題有以下幾種,如果你們中的一些有時間來回答:發送消息速度套接字
我送我的字符串如下:
clientStream.Write(buffer, 0, buffer.Length); clientStream.Flush();
其中clientStream是的NetworkStream。但它成爲一個問題,如果函數是在一個while循環 如下:
while(true)
{
clientStream.Write(buffer, 0, buffer.Length);
clientStream.Flush();
}
這些消息似乎有時會交織在一起,並在服務器部分損壞。但是,如果我在while循環中添加一個Thread.Sleep(可能有30個作爲in參數)調用,則不行。 我不知道爲什麼這些消息如果是TCP套接字連接就會交織在一起?函數如何調用:
clientStream.Write(buffer, 0, buffer.Length);
clientStream.Flush();
工作嗎?
- 您可以通過TCP套接字連接每秒發送多少條消息?速度取決於什麼? 謝謝你的時間!
TCP是基於流的,而不是基於消息的。不要用消息來思考。兩次調用'Write'不一定會導致兩次調用服務器上的'Read'。數據可能會在任何時候分裂或合併。然而,它將始終是連續的。 – 2012-07-24 16:45:54
由於TCP,消息非常非常不可靠。我的猜測是你只是在沒有睡眠的情況下以某種方式向插座寫垃圾。您的應用程序是否從多個線程寫入相同的套接字? (通常,當問題是「垃圾輸出」時,這是一個很好的猜測。) – millimoose 2012-07-24 16:47:35
知道如何創建和初始化「緩衝區」以及如何重新組裝服務器上的消息也很有趣。 (以及如何確定消息何時開始和結束。) – millimoose 2012-07-24 17:02:47