我正在尝试从套接字读取文件。
我使用 select with timeout 在阅读后退出。
select(maxfdp1, &rset, NULL, NULL, &timeout);
但是,如果我立即知道要发送的文件的大小,我可以在获得正确数量的字节后立即退出。
Сan我在传输之前获得完整的文件大小吗?
或者我应该使用什么在传输完成后立即退出?
最佳答案
因为 TCP 是面向流的协议(protocol),所以它没有应用层消息大小的概念。如果您在 TCP 之上设置自己的应用层协议(protocol),您可以让发送方首先传输以下数据的大小,例如网络顺序中的四个字节(大端序)。
收到所需的所有数据后,您可以调用 close
socket 上。
关于c - Сan 我通过套接字收到文件后立即退出 С,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61897835/