関数エラー時の戻り値
マニフェスト定数 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;
}
関連トピック