套接字c#发送和接收

时间:2012-07-22 03:20:47

标签: c# sockets

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

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 发送 2 收到

请帮我解决这个问题??? :(

2 个答案:

答案 0 :(得分:2)

使用'\ n'之类的行分隔符并拆分包含消息。使用TCP,您必须为分组或连接数据包的情况做好准备。

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

答案 1 :(得分:2)

这些是您的一些选择

  1. 您可以使用长度前缀消息。您始终在前4个字节中发送消息长度的位置。服务器将读取前四个字节并知道长度,并知道剩余字节数是该消息的一部分。它会知道接下来的四个字节,依此类推。
  2. 您可以拥有留言demarker 。例如,如果您知道您的消息永远不会有特定的位模式,则可以将其作为消息demarker发送。作为示例,服务器可能总是扫描位模式0,1,0,1,0,1并且知道消息已经结束
  3. 您可以使用基础架构为您处理的更高级别框架WCF