2012-07-22 78 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
相关问题