0

我创建了 2 个程序,一个用于发送,另一个用于接收数据。所以,

接收数据的部分是:

while ((recvMsgSize = sock->recv(echoBuffer, RCVBUFSIZE))>0) {
   write(fileno(stdout), echoBuffer, recvMsgSize);
}

如果我用它来接收大文件数据,它工作得很好,少量数据它就不起作用。我知道问题出在 recv 部分,因为如果我使用 netcat 来接收数据,它工作得很好,它会接收整个数据。有没有其他方法可以接收数据?

谢谢

4

1 回答 1

1

我猜你的套接字正在阻塞,recv 正在等待发送 RCVBUFSIZE 字节。您应该先发送将要发送的文件的大小,然后计算您收到了多少数据,并且仅在您丢失的数据小于 RCVBUFSIZE 字节时才请求剩余部分。

于 2012-03-12T17:38:31.873 回答