INVALID_SOCKET的值

时间:2021-06-06 02:24:09

INVALID_SOCKET的值

(2011-06-26 15:06:45)

标签:

杂谈

INVALID_SOCKET的值不是-1,原因参考basetsd.h和WinSock2.h:

typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;

typedef UINT_PTR        SOCKET;

#define INVALID_SOCKET  (SOCKET)(~0)

(~0)的值为-1;

(SOCKET)(~0)的值为:十六进制0xFFFFFFFF(十进制4294967295)。

To abort a connection, release a socket handle, and discard data pending for writing, do:

closesocket(sock);
sock = INVALID_SOCKET; // do not make further use of sock.

To flush a sock handle, gracefully close the socket, and release the socket handle in the
background:

DisconnectEx(sock, NULL, 0, 0); // retrieve this function pointer with WSAIoctl(WSAID_DISCONNECTEX).
closesocket(sock);
sock = INVALID_SOCKET; // do not make further use of sock.

 

http://msdn.microsoft.com/en-us/library/ms737582(VS.85).aspx