Valeurs de retour sur l’échec de la fonction
La constante manifeste SOCKET_ERROR est fournie pour la vérification de l’échec de la fonction. Bien que l’utilisation de cette constante ne soit pas obligatoire, il est recommandé. L’exemple suivant illustre l’utilisation de la constante SOCKET_ERROR.
Style BSD classique (ne fonctionne pas sur Windows)
r = recv(ClientSocket, recvbuf, recvbuflen, 0);
if (r == -1 /* or r < 0 */
&& errno == EWOULDBLOCK) {
printf("recv failed with error: EWOULDBLOCK\n");
}
Windows Style
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;
}
Rubriques connexes
-
codes d’erreur - errno, h_errno et WSAGetLastError
-
considérations relatives à la programmation Winsock