Quick answer
Check if your app handles non-blocking sockets right, or increase socket buffer sizes. Also disable any VPN or proxy temporarily.
What's going on here?
WSAEWOULDBLOCK (error code 0x00002733, also known as WSAEWOULDBLOCK 10035) happens when a program tries to do something on a non-blocking socket that would block — like reading or writing — and the operation can't finish immediately. It's not a crash, it's a signal to the app to try again later. The culprit here is almost always a busy server, a misconfigured VPN, or a program that doesn't properly handle async socket operations. I've seen it a ton with custom apps, game servers, and even some file transfer tools when the network gets choked.
Here's a real-world example: You're running a small web scraper on Windows 11, and it tries to send a request to a slow server. The socket is set to non-blocking, so the send call returns immediately with this error. The scraper code should loop and retry, but if it doesn't, you're stuck.
Step-by-step fix
- Disable VPN or proxy — Temporary turn off any VPN software or proxy. These often add latency that triggers this error. Re-test your app.
- Increase socket send and receive buffer sizes — In your app code, set SO_SNDBUF and SO_RCVBUF to at least 65535 bytes. For example in C:
int buf_size = 65535;
setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char*)&buf_size, sizeof(buf_size)); - Check for firewall rules — Open Windows Defender Firewall with Advanced Security. Look for any outbound rules blocking the app's port. If you see one, disable it temporarily.
- Verify the app handles non-blocking correctly — The app must use select(), poll(), or WSAEventSelect() to check if the socket is ready before reading or writing. If it's not doing that, the error will pop up constantly. Example pseudo-code:
fd_set write_fds;
FD_ZERO(&write_fds);
FD_SET(sock, &write_fds);
struct timeval tv = {1, 0}; // 1 second timeout
int result = select(sock + 1, NULL, &write_fds, NULL, &tv);
if (result > 0) {
send(sock, data, len, 0);
} - Update winsock or network drivers — Run
netsh winsock resetfrom an admin command prompt, then restart. Also update your network adapter driver from the manufacturer's site (not Windows Update).
If main steps don't work
Try these alternative fixes. Skip the first if you've already done it.
- Switch to blocking mode — If the app is custom code, change the socket to blocking mode using ioctlsocket() with FIONBIO set to 0. This removes the error but can freeze the program if the server is slow.
- Use a different socket library — Some libraries like libcurl or Boost.Asio handle non-blocking better than raw Winsock calls. Rewrite the app to use one of these.
- Check for antivirus interference — Temporarily disable real-time scanning in your AV (like Norton or McAfee) and test. AVs hook into Winsock and can cause delays.
Prevention tips
Once you fix it, do these to avoid the error coming back.
- Always set a socket timeout with setsockopt() and SO_RCVTIMEO / SO_SNDTIMEO (even for non-blocking sockets, it helps).
- Use a dedicated server with low latency and avoid VPNs during high-load operations.
- In production code, implement a retry loop with exponential backoff when you get WSAEWOULDBLOCK. Don't just log it and quit.
Most people over-think this error. It's just a signal. Fix the app logic or the network load and you're done.