我在 winsock 的 recv() 循环中遇到问题。我试图在 iResult==0 时终止循环,但是,循环仅在套接字关闭时结束。它似乎挂在 iResult 等于 0 的最后一个 recv() 处。那么关于如何有效终止循环的任何想法?我的最终目标(无论 iResult == 0 与否;也许我的做法是错误的)是在读取所有发送的信息后停止循环。这是循环。
do
{
iResult = recv(socket, recvbuf, BUFLEN-1, 0);
if(iResult > 0){
// Null byte :)
// Remove that garbage >:(
recvbuf[iResult] = '\0';
printf("Recvbuf: %s\n\n\niResult: %d\n",recvbuf,iResult);
continue; // working properly
}
else if(iResult == 0)
// Connection closed properly
break;
else
{
printf("ERROR! %ld",WSAGetLastError());
break;
}
} while(iResult > 0);
就像我说的,我正在接收所有数据,我就是无法退出循环。下一步是将数据写回服务器,但它会挂在这里直到 ping 超时。套接字是 SOCK_STREAM 并且 BUFLEN 定义为 0x200
谢谢