Valeurs de retour en cas d’é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, elle est recommandée. 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