Re: WSAEWOULDBLOCK with WSASend/send
Aslan wrote:
"Ulrich Eckhardt" <eckhardt@satorlaser.com>, haber iletisinde sunlari
yazdi:kj7sn3-s6b.ln1@satorlaser.homedns.org...
Hi!
I'm having trouble understanding why WSASend/send would return with
WSAEWOULDBLOCK. The point is that I didn't request an overlapped
operation and would be quite happy to have it block until it is finished,
so why does it return with that error instead? Yes, I have seen that the
MSDN calls this a 'non-fatal error' and that one should retry later, but
that's plain stupid IMHO.
So you call send on a non-blocking socket. If it is OK for you to block on
it, you should use a blocking socket.
For non-blocking socket, it means send() cannot be performed at that time,
it seems OK to me.
Okay, so where do I get a blocking socket from? AFAIK, you have to
explicitly switch the socket into nonblocking mode by e.g. giving
WSA_FLAG_OVERLAPPED to WSASocket(), but I don't do that. Also, when calling
WSAAccept(), how would I afterwards switch the socket to blocking mode?
Also, just for confirmation, when I read the docs I understand that when I
don't use the 'overlapped..' parts of the WSASend() parameters it should
behave like a blocking call, right? At least that's how I understand it.
thanks
Uli