正确捕获tcp数据包时出现问题

正确捕获tcp数据包时出现问题,tcp,Tcp,先生, 我正在使用TCP套接字向另一个系统发送一些字符串。我拿了8个钮扣。单击每个按钮时,使用相同的套接字将不同的字符串发送到相同的IP和端口。套接字在启动时连接到指定的IP一次。现在在第二个系统中,我正在分析数据包(使用一些数据包分析器),但我无法正确地找到数据。 问题:如果我点击一个按钮,并分析数据包,它的罚款。我分别找到了数据包和数据部分。很好。但如果我单击3或4个按钮,然后在数据包分析器中分析数据包,我会发现所有字符串(来自单击的按钮)都连接在数据部分下,而只有一个标题部分。对于不同的点

先生, 我正在使用TCP套接字向另一个系统发送一些字符串。我拿了8个钮扣。单击每个按钮时,使用相同的套接字将不同的字符串发送到相同的IP和端口。套接字在启动时连接到指定的IP一次。现在在第二个系统中,我正在分析数据包(使用一些数据包分析器),但我无法正确地找到数据。 问题:如果我点击一个按钮,并分析数据包,它的罚款。我分别找到了数据包和数据部分。很好。但如果我单击3或4个按钮,然后在数据包分析器中分析数据包,我会发现所有字符串(来自单击的按钮)都连接在数据部分下,而只有一个标题部分。对于不同的点击,必须有不同的数据包。我的意思是每个字符串必须封装在不同的数据包中。 有什么问题吗?
请回复。。。谢谢….

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

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

  • 在每个数据块前面加一个包含数据长度的头,刷新传输队列,在远程端只读取头,并使用该头进一步读取数据
  • 为每个数据包建立一个新的tcp连接(与基本http协议类似)
  • 使每个块的大小相同(比如说40个字节),并在远程端精确读取

  • 顺便说一句,您可能需要确保每个套接字只有一个写入线程。

    连接到设备,因此为每个数据包建立新的TCp连接可能会转储设备。我不认为我必须发送每一个以头为前缀的包。操作系统的职责是将数据封装在数据包中。每个数据块必须层层封装,另一端必须执行提取。所以,若我使用packt分析仪,那个么我必须显示标题,数据。。。。标题,数据,标题,数据。。。对于每一个数据包。就大小而言,我认为标准TCP数据包中的数据部分是固定的。因此,操作系统的职责是根据TCP数据包数据部分的长度划分字符串(字节)。@himanshu:不!读第一句:“tcp是一种流协议。”它不保留数据包边界。