繁体   English   中英

套接字c#发送和接收

[英]Socket c# send and receive

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

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

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

你好world1hello world2

但我希望客户收到22收到

请帮我解决一下怎么办? :(

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

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

这些是你的一些选择

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM