可以用recv来判断你接收了多少数据,发送的时候带上数据大小等,当接收到你需要的数据后,就认为数据读完了 2。 select是一个好办法,也可以使用ioctlsocket的FIONREAD参数获得可读到的字节数。可以用select先去偷偷看下有没数据 如果有再去取
如这样:select(0, &recvfd, NULL, NULL, &buf); 参考:
fd_set recvfd;
struct timeval tv = {3, 0}; FD_ZERO(&recvfd);
FD_SET(sockFrom, &recvfd); //检测有没有数据到达socket int result = select(0, &recvfd, NULL, NULL, &tv);
if( result > 0 )
{
//接受数据
//recvdata
}