2012-03-12 42 views
0

我创建了2个程序,一个发送,另一个接收数据。 所以,套接字发送数据但recv程序工作不好

到的recv数据的部分是:

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

如果我用它来recv的一个大的文件数据,它工作得很好,它不工作的数据量小。 我知道问题是与recv部分,因为如果我使用netcat recv数据它效果很好,它recv整个数据。 有没有其他的方式来接收数据?

感谢

+0

什么是袜子?它是您创建的套接字的抽象吗?它如何失败? – mfontanini 2012-03-12 17:26:42

回答

1

我猜你的插座阻止和recv等待RCVBUFSIZE字节被发送。您应该首先发送要发送的文件大小,然后计算您收到的数据量,并且只在您缺少的部分小于RCVBUFSIZE字节时请求剩余部分。