1

我正在尝试从套接字读取文件。我使用 select with timeout 在阅读后退出。

select(maxfdp1, &rset, NULL, NULL, &timeout);

但是,如果我立即知道要发送的文件的大小,我可以在获得正确数量的字节后立即退出。

Сan我在传输之前获得完整的文件大小吗?

或者我应该使用什么在传输完成后立即退出?

4

1 回答 1

3

因为 TCP 是面向流的协议,所以它没有应用层消息大小的概念。如果您在 TCP 之上设置自己的应用层协议,您可以让发送方首先传输以下数据的大小,例如网络顺序中的四个字节(大端序)。

一旦你收到了所有你想要的数据,你就可以调用close套接字了。

于 2020-05-19T18:14:45.680 回答