0

在 TCP 中传输数据时,给定所有传入和传出的数据包,如何知道收到的数据包是否是最后一个数据?

TCP 数据包被分割成更小的部分。我正在通过 HTTP 协议进行传输。

4

3 回答 3

1

FIN连接的一端设置该标志时,表示该端将不再发送数据。

如果在最后一个数据之后连接没有被关闭,那么必须有一个应用层的方法来确定它。对于 HTTP,规则相当复杂。

于 2010-02-27T07:15:41.553 回答
1

您可以使用协议PSH标志TCP。它应该在最后一个数据包中设置为 1。

要确认这一点,只需开始跟踪、制作HTTP GET和过滤会话。您会发现您的每个响应的最后一个数据包都HTTP GET带有此标志。

于 2015-12-09T13:33:09.663 回答
0

我假设您正在使用某种套接字库。您可以告诉 TCP 连接已完成,因为read()套接字上的 a 将返回0。这将在另一方关闭连接时发生(它永远不必这样做)。

于 2010-03-08T04:12:37.040 回答