函式失敗時的傳回值
系統會提供資訊清單常數 SOCKET_ERROR 來檢查函式失敗。 雖然不強制使用此常數,但建議使用。 下列範例說明如何使用 SOCKET_ERROR 常數。
一般 BSD 樣式 (無法在 Windows) 上運作
r = recv(ClientSocket, recvbuf, recvbuflen, 0);
if (r == -1 /* or r < 0 */
&& errno == EWOULDBLOCK) {
printf("recv failed with error: EWOULDBLOCK\n");
}
Windows 樣式
iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);
if (iResult == SOCKET_ERROR ) {
iError = WSAGetLastError();
if (iError == WSAEWOULDBLOCK)
printf("recv failed with error: WSAEWOULDBLOCK\n");
else
printf("recv failed with error: %ld\n", iError);
closesocket(ClientSocket);
WSACleanup();
return 1;
}
相關主題