套接字发送数据,但 recv 程序无法正常工作

Socket send data but the recv program dont work well

本文关键字:常工作 工作 程序 数据 recv 套接字      更新时间:2023-10-16

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

接收数据的部分是:

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

如果我使用它来接收大文件数据,它运行良好,对于少量数据则不起作用。我知道问题出在 recv 部分,因为如果我使用 netcat 来接收数据,它运行良好,它会接收整个数据。还有其他方法可以接收数据吗?

谢谢

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