我正在尝试从套接字读取文件。我使用带有超时的select命令在阅读后退出。
select(maxfdp1, &rset, NULL, NULL, &timeout);
但是如果我知道马上要发送的文件的大小,我就可以在得到正确的字节数后立即退出。我可以在传输之前获得完整的文件大小吗?或者我应该使用什么来在传输完成后立即退出?
2lpgd9681#
由于TCP是一个面向流的协议,它没有应用层消息大小的概念。如果您在TCP之上设置自己的应用层协议,则可以让发送方首先传输以下数据的大小,例如按网络顺序传输四个字节(big Endian)。一旦收到所有想要的数据,就可以在套接字上调用close。
close
1条答案
按热度按时间2lpgd9681#
由于TCP是一个面向流的协议,它没有应用层消息大小的概念。如果您在TCP之上设置自己的应用层协议,则可以让发送方首先传输以下数据的大小,例如按网络顺序传输四个字节(big Endian)。
一旦收到所有想要的数据,就可以在套接字上调用
close
。