可能重复:
TCP Client Side Issue
使用c#TCP客户端和服务器应用程序时遇到了大麻烦。一切正常......但在某些情况下,当TCP服务器同时向TCP客户端发送响应时,客户端可以认为服务器发送的两条消息实际上都是单条消息。我不知道为什么会发生这种情况......如果有人知道请帮助我。我的TCP客户端和服务器是用c#编写的。
答案 0 :(得分:0)
这是TCP的正常行为。它保证了序列(如果服务器发送A,然后是B,客户端永远不会收到B,那么A),但它对你的“消息”一无所知。
要将数据分解为客户端的消息,您需要一些TCP上的应用程序协议。例如,HTTP使用CRLFCRLF来确定HTTP消息的结束 根据您的需要,您可以使用现有的或自己制作的。
答案 1 :(得分:0)
在TCP连接的一端调用Write
和在另一端调用Read
之间无法保证1-1的对应关系。每次拨打Read
您可以执行任何适当的工作来将这些数据块重新转换为消息 - 或者如果您想要其他方法来完成这项工作,还可以切换到更高级别的技术(例如WCF)。