1


当服务器发送两条消息时,在没有多客户端的服务器/客户端程序中,例如:

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);

客户端在一条消息中收到了两条消息,例如:

你好世界1你好世界2

但我希望客户端接收2发送2接收

请帮助我如何解决它???:(

4

2 回答 2

2

使用像 '\n' 这样的行分隔符并拆分传入的消息。使用 TCP,您必须为数据包被拆分或连接的情况做好准备。

如果您使用 UDP,则可以发送单独的数据包。

于 2012-07-22T03:41:32.773 回答
2

这些是您的一些选择

  1. 您可以使用长度前缀消息。例如,您总是在前 4 个字节中发送消息的长度。服务器将读取前四个字节并知道长度并知道有多少剩余字节是该消息的一部分。它会知道接下来的四个字节等等。
  2. 你可以有一个消息 demarker。例如,如果您知道您的消息永远不会有特定的位模式,您可以将其作为消息标记器发送。例如,服务器可能总是扫描位模式 0,1,0,1,0,1 并知道消息已结束
  3. 您可以使用更高级别的框架 WCF,基础设施会为您处理它
于 2012-07-22T03:44:20.370 回答