會出現 10035 WSAEWOULDBLOCK, 代表這個應用程式將 socket 經由
ioctlsocket() 或 WSAAsyncSelect() 函式, 設定為 non-blocking 狀態;
而在程式中呼叫到 accept(), connect(), recv(), send() 等 blocking
函式, 可是目前事件未完成或條件不成立, 原本程式應該會 block 在這個
呼叫, 但由於先前已將 socket 設為 non-blocking 了, 所以我們並不會被
block 住, 函式呼叫會馬上 return, 這時系統給我們的錯誤就是 10035
WSAEWOULDBLOCK.
=======================================================================
呼叫 send() 或 sendto() 傳送資料時,系統告知錯誤,且錯誤碼為
10035 WSAEWOULDBLOCK.(呼叫 WSAGetLastError() 可得知這項錯誤),
這時表示 output buffer 已經滿了,無法再寫入任何資料(此時即令呼叫
再多次的 send() 也都一定失敗);一旦系統將部份資料成功送抵對方,
空出 output buffer 後,便會送一個 FD_WRITE 給使用者,告知可繼續
傳送資料了。換句話說,讀者在呼叫 send() 傳送資料時,只要不是返回
錯誤 10035 的話,便可一直繼續呼叫 send() 來傳送資料;一旦 send()
回返錯誤 10035,那麼便不要再呼叫 send() 傳送資料,而需等收到
FD_WRITE 後,再繼續傳送資料。