Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 套接字发送数据,但recv程序无法正常工作_C++_Linux_Sockets_Netcat - Fatal编程技术网

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

C++ 套接字发送数据,但recv程序无法正常工作,c++,linux,sockets,netcat,C++,Linux,Sockets,Netcat,我创建了两个程序,一个用来发送数据,另一个用来接收数据。 所以 接收数据的部分是: while ((recvMsgSize = sock->recv(echoBuffer, RCVBUFSIZE))>0) { write(fileno(stdout), echoBuffer, recvMsgSize); } 如果我用它来接收一个大文件数据,它工作得很好,但如果数据量很小,它就不工作了。 我知道问题出在recv部分,因为如果我使用netcat来recv数据,它工作得很好,它会r

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

接收数据的部分是:

while ((recvMsgSize = sock->recv(echoBuffer, RCVBUFSIZE))>0) {
   write(fileno(stdout), echoBuffer, recvMsgSize);
}
如果我用它来接收一个大文件数据,它工作得很好,但如果数据量很小,它就不工作了。 我知道问题出在recv部分,因为如果我使用netcat来recv数据,它工作得很好,它会recv整个数据。 是否有其他方式接收数据


谢谢

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

什么是sock?它是您创建的套接字的抽象吗?它怎么会失败?