2012-07-22 79 views
1

沒有多客戶
當服務器發送兩個消息,如:插座C#發送和接收在服務器/客戶端程序

byte[] data = Encoding.Default.GetBytes("hello world1"); 
socket.Send(data1, 0, data.Length, 0); 

byte[] data = Encoding.Default.GetBytes("hello world2"); 
socket.Send(data1, 0, data.Length, 0); 

客戶端接收到的兩個消息中一個消息,如:

hello world1hello world2

但我想客戶端收到發送收到

請幫我解決方法? :(

回答

2

使用行分隔符如「\ n」和分裂進來的消息。隨着TCP必須爲其中包分裂向上或加入情況做準備。

如果使用UDP,您可以發送不同的分組。

2

這些都是你的選擇

  1. 您可以使用長度前綴消息。如果你總是發送消息的長度,例如在第一個4個字節,服務器將讀取的前四字節s並且知道這個消息的長度並知道剩餘的字節是多少。它會知道接下來的四個字節等等等等。
  2. 您可以留言刪除標記。例如,如果你知道你的消息永遠不會有特定的位模式,你可以將它作爲消息demarker發送。例如,服務器可能總是掃描位模式0,1,0,1,0,1並知道該消息已結束
  3. 您可以使用基礎結構爲您處理它的更高級別框架WCF
相關問題