在函数失败时返回值
提供清单常量 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;
}
相关主题