共用方式為


函式失敗時的傳回值

系統會提供資訊清單常數 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;
        }    

錯誤碼 - errno、h_errno 和 WSAGetLastError

處理 Winsock 錯誤

將通訊端應用程式移植到 Winsock

Winsock 程式設計考慮

Windows Sockets 錯誤碼