TCP客户端服务器问题

时间:2012-09-10 10:18:11

标签: c# tcpclient tcpserver

  

可能重复:
  TCP Client Side Issue

使用c#TCP客户端和服务器应用程序时遇到了大麻烦。一切正常......但在某些情况下,当TCP服务器同时向TCP客户端发送响应时,客户端可以认为服务器发送的两条消息实际上都是单条消息。我不知道为什么会发生这种情况......如果有人知道请帮助我。我的TCP客户端和服务器是用c#编写的。

2 个答案:

答案 0 :(得分:0)

这是TCP的正常行为。它保证了序列(如果服务器发送A,然后是B,客户端永远不会收到B,那么A),但它对你的“消息”一无所知。

要将数据分解为客户端的消息,您需要一些TCP上的应用程序协议。例如,HTTP使用CRLFCRLF来确定HTTP消息的结束 根据您的需要,您可以使用现有的或自己制作的。

答案 1 :(得分:0)

在TCP连接的一端调用Write和在另一端调用Read之间无法保证1-1的对应关系。每次拨打Read

,您可能不会收到任何数据,部分信息,整封邮件或多封邮件

您可以执行任何适当的工作来将这些数据块重新转换为消息 - 或者如果您想要其他方法来完成这项工作,还可以切换到更高级别的技术(例如WCF)。