问题
I'm devleoping a server in c++ and when im using recv() in a while loop it returns all the time length of -1 and also continue the loop without blocking.
while(true)
{
char buffer[1024];
int dataLength = recv(socket, buffer, 1024, 0)
cout << dataLength;
}
output: -1-1-1-1-1-1-1-1-1.............
Anyone knows how to make this socket to block until it recievs data?
Thanks in advance!
回答1:
maybe there is an error during initilization try calling GetLastError() and printing the result after each call
回答2:
As James suggested, check if a socket error occured. recv()
s default behaviour is to block. See also this thread here.
来源:https://stackoverflow.com/questions/11065017/c-winsock-recv-not-blocking