正确捕获tcp数据包的问题

时间:2011-02-11 06:09:58

标签: tcp

爵士 我正在使用TCP套接字向另一个系统发送一些字符串。我拿了8个按钮。单击每个按钮,使用相同的套接字将不同的字符串发送到同一IP和PORT。套接字在启动时连接到指定的IP一次。现在在第二个系统中分析数据包(使用一些数据包分析器),但我找不到正确的数据。 问题:如果我单击一个按钮并分析数据包就可以了。我分别找到了数据包和数据部分。它退出了。如果我点击3或4个按钮并且之后分析数据包分析器中的数据包比我发现数据部分下连接的所有字符串(来自点击按钮)而只有一个标题部分。不同的点击必须有不同的数据包。我的意思是每个字符串必须封装在不同的数据包中。 可能是什么问题? 请回复......谢谢.....

1 个答案:

答案 0 :(得分:2)

不,tcp是一种流协议。您将数据放在一端的数据块中,但当数据到达远程端时,这些数据块之间的边界可能会消失。

如果你必须使用tcp,那么你将有几个选择。

  1. 使用包含数据长度的标头前缀每个数据块,刷新发送队列,只读取远端的标头,然后使用它来进一步读取数据。
  2. 为每个数据包建立一个新的tcp连接(而非基本的http协议)。
  3. 让每个块的大小相同(比方说40个字节),然后在远端读取。
  4. 顺便说一句,您可能需要确保每个插槽只有一个写入线程。

相关问题