📄 winsock2.h
字号:
#ifndef WSABASEERR#define WSABASEERR 10000#define WSAEINTR (WSABASEERR+4)#define WSAEBADF (WSABASEERR+9)#define WSAEACCES (WSABASEERR+13)#define WSAEFAULT (WSABASEERR+14)#define WSAEINVAL (WSABASEERR+22)#define WSAEMFILE (WSABASEERR+24)#define WSAEWOULDBLOCK (WSABASEERR+35)#define WSAEINPROGRESS (WSABASEERR+36) /* deprecated on WinSock2 */ #define WSAEALREADY (WSABASEERR+37)#define WSAENOTSOCK (WSABASEERR+38)#define WSAEDESTADDRREQ (WSABASEERR+39)#define WSAEMSGSIZE (WSABASEERR+40)#define WSAEPROTOTYPE (WSABASEERR+41)#define WSAENOPROTOOPT (WSABASEERR+42)#define WSAEPROTONOSUPPORT (WSABASEERR+43)#define WSAESOCKTNOSUPPORT (WSABASEERR+44)#define WSAEOPNOTSUPP (WSABASEERR+45)#define WSAEPFNOSUPPORT (WSABASEERR+46)#define WSAEAFNOSUPPORT (WSABASEERR+47)#define WSAEADDRINUSE (WSABASEERR+48)#define WSAEADDRNOTAVAIL (WSABASEERR+49)#define WSAENETDOWN (WSABASEERR+50)#define WSAENETUNREACH (WSABASEERR+51)#define WSAENETRESET (WSABASEERR+52)#define WSAECONNABORTED (WSABASEERR+53)#define WSAECONNRESET (WSABASEERR+54)#define WSAENOBUFS (WSABASEERR+55)#define WSAEISCONN (WSABASEERR+56)#define WSAENOTCONN (WSABASEERR+57)#define WSAESHUTDOWN (WSABASEERR+58)#define WSAETOOMANYREFS (WSABASEERR+59)#define WSAETIMEDOUT (WSABASEERR+60)#define WSAECONNREFUSED (WSABASEERR+61)#define WSAELOOP (WSABASEERR+62)#define WSAENAMETOOLONG (WSABASEERR+63)#define WSAEHOSTDOWN (WSABASEERR+64)#define WSAEHOSTUNREACH (WSABASEERR+65)#define WSAENOTEMPTY (WSABASEERR+66)#define WSAEPROCLIM (WSABASEERR+67)#define WSAEUSERS (WSABASEERR+68)#define WSAEDQUOT (WSABASEERR+69)#define WSAESTALE (WSABASEERR+70)#define WSAEREMOTE (WSABASEERR+71)#define WSAEDISCON (WSABASEERR+101)#define WSASYSNOTREADY (WSABASEERR+91)#define WSAVERNOTSUPPORTED (WSABASEERR+92)#define WSANOTINITIALISED (WSABASEERR+93)#define WSAHOST_NOT_FOUND (WSABASEERR+1001)#define WSATRY_AGAIN (WSABASEERR+1002)#define WSANO_RECOVERY (WSABASEERR+1003)#define WSANO_DATA (WSABASEERR+1004)/* WinSock2 specific error codes */#define WSAENOMORE (WSABASEERR+102)#define WSAECANCELLED (WSABASEERR+103)#define WSAEINVALIDPROCTABLE (WSABASEERR+104)#define WSAEINVALIDPROVIDER (WSABASEERR+105)#define WSAEPROVIDERFAILEDINIT (WSABASEERR+106)#define WSASYSCALLFAILURE (WSABASEERR+107)#define WSASERVICE_NOT_FOUND (WSABASEERR+108)#define WSATYPE_NOT_FOUND (WSABASEERR+109)#define WSA_E_NO_MORE (WSABASEERR+110)#define WSA_E_CANCELLED (WSABASEERR+111)#define WSAEREFUSED (WSABASEERR+112) /* WS QualityofService errors */#define WSA_QOS_RECEIVERS (WSABASEERR + 1005)#define WSA_QOS_SENDERS (WSABASEERR + 1006)#define WSA_QOS_NO_SENDERS (WSABASEERR + 1007)#define WSA_QOS_NO_RECEIVERS (WSABASEERR + 1008)#define WSA_QOS_REQUEST_CONFIRMED (WSABASEERR + 1009)#define WSA_QOS_ADMISSION_FAILURE (WSABASEERR + 1010)#define WSA_QOS_POLICY_FAILURE (WSABASEERR + 1011)#define WSA_QOS_BAD_STYLE (WSABASEERR + 1012)#define WSA_QOS_BAD_OBJECT (WSABASEERR + 1013)#define WSA_QOS_TRAFFIC_CTRL_ERROR (WSABASEERR + 1014)#define WSA_QOS_GENERIC_ERROR (WSABASEERR + 1015)#define WSA_QOS_ESERVICETYPE (WSABASEERR + 1016)#define WSA_QOS_EFLOWSPEC (WSABASEERR + 1017)#define WSA_QOS_EPROVSPECBUF (WSABASEERR + 1018)#define WSA_QOS_EFILTERSTYLE (WSABASEERR + 1019)#define WSA_QOS_EFILTERTYPE (WSABASEERR + 1020)#define WSA_QOS_EFILTERCOUNT (WSABASEERR + 1021)#define WSA_QOS_EOBJLENGTH (WSABASEERR + 1022)#define WSA_QOS_EFLOWCOUNT (WSABASEERR + 1023)#define WSA_QOS_EUNKOWNPSOBJ (WSABASEERR + 1024)#define WSA_QOS_EPOLICYOBJ (WSABASEERR + 1025)#define WSA_QOS_EFLOWDESC (WSABASEERR + 1026)#define WSA_QOS_EPSFLOWSPEC (WSABASEERR + 1027)#define WSA_QOS_EPSFILTERSPEC (WSABASEERR + 1028)#define WSA_QOS_ESDMODEOBJ (WSABASEERR + 1029)#define WSA_QOS_ESHAPERATEOBJ (WSABASEERR + 1030)#define WSA_QOS_RESERVED_PETYPE (WSABASEERR + 1031)#endif /* !WSABASEERR */#define WSANO_ADDRESS WSANO_DATA#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))#define h_errno WSAGetLastError()#define HOST_NOT_FOUND WSAHOST_NOT_FOUND#define TRY_AGAIN WSATRY_AGAIN#define NO_RECOVERY WSANO_RECOVERY#define NO_DATA WSANO_DATA#define NO_ADDRESS WSANO_ADDRESS#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */SOCKET PASCAL accept(SOCKET,struct sockaddr*,int*);int PASCAL bind(SOCKET,const struct sockaddr*,int);int PASCAL closesocket(SOCKET);int PASCAL connect(SOCKET,const struct sockaddr*,int);int PASCAL ioctlsocket(SOCKET,long,u_long *);int PASCAL getpeername(SOCKET,struct sockaddr*,int*);int PASCAL getsockname(SOCKET,struct sockaddr*,int*);int PASCAL getsockopt(SOCKET,int,int,char*,int*);unsigned long PASCAL inet_addr(const char*);DECLARE_STDCALL_P(char *) inet_ntoa(struct in_addr);int PASCAL listen(SOCKET,int);int PASCAL recv(SOCKET,char*,int,int);int PASCAL recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*);int PASCAL send(SOCKET,const char*,int,int);int PASCAL sendto(SOCKET,const char*,int,int,const struct sockaddr*,int);int PASCAL setsockopt(SOCKET,int,int,const char*,int);int PASCAL shutdown(SOCKET,int);SOCKET PASCAL socket(int,int,int);DECLARE_STDCALL_P(struct hostent *) gethostbyaddr(const char*,int,int);DECLARE_STDCALL_P(struct hostent *) gethostbyname(const char*);DECLARE_STDCALL_P(struct servent *) getservbyport(int,const char*);DECLARE_STDCALL_P(struct servent *) getservbyname(const char*,const char*);DECLARE_STDCALL_P(struct protoent *) getprotobynumber(int);DECLARE_STDCALL_P(struct protoent *) getprotobyname(const char*);int PASCAL WSAStartup(WORD,LPWSADATA);int PASCAL WSACleanup(void);void PASCAL WSASetLastError(int);int PASCAL WSAGetLastError(void);/* * Pseudo-blocking functions are deprecated in WinSock2 * spec. Use threads instead. */BOOL PASCAL WSAIsBlocking(void);int PASCAL WSAUnhookBlockingHook(void);FARPROC PASCAL WSASetBlockingHook(FARPROC);int PASCAL WSACancelBlockingCall(void);HANDLE PASCAL WSAAsyncGetServByName(HWND,u_int,const char*,const char*,char*,int);HANDLE PASCAL WSAAsyncGetServByPort(HWND,u_int,int,const char*,char*,int);HANDLE PASCAL WSAAsyncGetProtoByName(HWND,u_int,const char*,char*,int);HANDLE PASCAL WSAAsyncGetProtoByNumber(HWND,u_int,int,char*,int);HANDLE PASCAL WSAAsyncGetHostByName(HWND,u_int,const char*,char*,int);HANDLE PASCAL WSAAsyncGetHostByAddr(HWND,u_int,const char*,int,int,char*,int);int PASCAL WSACancelAsyncRequest(HANDLE);int PASCAL WSAAsyncSelect(SOCKET,HWND,u_int,long);#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))u_long PASCAL htonl(u_long);u_long PASCAL ntohl(u_long);u_short PASCAL htons(u_short);u_short PASCAL ntohs(u_short);int PASCAL select(int nfds,fd_set*,fd_set*,fd_set*,const struct timeval*);#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */int PASCAL gethostname(char*,int);#define WSAMAKEASYNCREPLY(b,e) MAKELONG(b,e)#define WSAMAKESELECTREPLY(e,error) MAKELONG(e,error)#define WSAGETASYNCBUFLEN(l) LOWORD(l)#define WSAGETASYNCERROR(l) HIWORD(l)#define WSAGETSELECTEVENT(l) LOWORD(l)#define WSAGETSELECTERROR(l) HIWORD(l)typedef struct sockaddr SOCKADDR;typedef struct sockaddr *PSOCKADDR;typedef struct sockaddr *LPSOCKADDR;typedef struct sockaddr_storage SOCKADDR_STORAGE, *PSOCKADDR_STORAGE;typedef struct sockaddr_in SOCKADDR_IN;typedef struct sockaddr_in *PSOCKADDR_IN;typedef struct sockaddr_in *LPSOCKADDR_IN;typedef struct linger LINGER;typedef struct linger *PLINGER;typedef struct linger *LPLINGER;typedef struct in_addr IN_ADDR;typedef struct in_addr *PIN_ADDR;typedef struct in_addr *LPIN_ADDR;typedef struct fd_set FD_SET;typedef struct fd_set *PFD_SET;typedef struct fd_set *LPFD_SET;typedef struct hostent HOSTENT;typedef struct hostent *PHOSTENT;typedef struct hostent *LPHOSTENT;typedef struct servent SERVENT;typedef struct servent *PSERVENT;typedef struct servent *LPSERVENT;typedef struct protoent PROTOENT;typedef struct protoent *PPROTOENT;typedef struct protoent *LPPROTOENT;typedef struct timeval TIMEVAL;typedef struct timeval *PTIMEVAL;typedef struct timeval *LPTIMEVAL;/* winsock2 additions */#define ADDR_ANY INADDR_ANY#define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000)#define IN_CLASSD_NET 0xf0000000#define IN_CLASSD_NSHIFT 28#define IN_CLASSD_HOST 0x0fffffff#define IN_MULTICAST(i) IN_CLASSD(i)#define FROM_PROTOCOL_INFO (-1)#define SO_DONTLINGER (u_int)(~SO_LINGER)#define SO_GROUP_ID 0x2001#define SO_GROUP_PRIORITY 0x2002#define SO_MAX_MSG_SIZE 0x2003#define SO_PROTOCOL_INFOA 0x2004#define SO_PROTOCOL_INFOW 0x2005#ifdef UNICODE#define SO_PROTOCOL_INFO SO_PROTOCOL_INFOW#else#define SO_PROTOCOL_INFO SO_PROTOCOL_INFOA#endif#define PVD_CONFIG 0x3001#define MSG_INTERRUPT 0x10#define MSG_MAXIOVLEN 16#define WSAAPI WINAPI#define WSAEVENT HANDLE#define LPWSAEVENT LPHANDLE#define WSAOVERLAPPED OVERLAPPEDtypedef struct _OVERLAPPED *LPWSAOVERLAPPED;#define WSA_IO_PENDING (ERROR_IO_PENDING)#define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE)#define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE)#define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER)#define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY)#define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED)#define WSA_INVALID_EVENT ((WSAEVENT)NULL)#define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)#define WSA_WAIT_FAILED ((DWORD)-1L)#define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0)#define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION)#define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT)#define WSA_INFINITE (INFINITE)typedef struct _WSABUF { unsigned long len; char *buf;} WSABUF, *LPWSABUF;typedef enum{ BestEffortService, ControlledLoadService, PredictiveService, GuaranteedDelayService, GuaranteedService} GUARANTEE;/* TODO: FLOWSPEC and related definitions belong in qos.h *//* Windows Sockets 2 Application Programming Interface, revision 2.2.2 (1997) uses the type uint32 for SERVICETYPE and the elements of _flowspec, but the type uint32 is not defined or used anywhere else in the w32api. For now, just use unsigned int, which is 32 bits on _WIN32 and _WIN64.*/typedef unsigned int SERVICETYPE;typedef struct _flowspec{ unsigned int TokenRate; unsigned int TokenBucketSize; unsigned int PeakBandwidth; unsigned int Latency; unsigned int DelayVariation; SERVICETYPE ServiceType; unsigned int MaxSduSize; unsigned int MinimumPolicedSize; } FLOWSPEC, *PFLOWSPEC, *LPFLOWSPEC;typedef struct _QualityOfService{ FLOWSPEC SendingFlowspec; FLOWSPEC ReceivingFlowspec; WSABUF ProviderSpecific;} QOS, *LPQOS;#define CF_ACCEPT 0x0000#define CF_REJECT 0x0001#define CF_DEFER 0x0002#define SD_RECEIVE 0x00#define SD_SEND 0x01#define SD_BOTH 0x02typedef unsigned int GROUP;#define SG_UNCONSTRAINED_GROUP 0x01#define SG_CONSTRAINED_GROUP 0x02typedef struct _WSANETWORKEVENTS { long lNetworkEvents; int iErrorCode[FD_MAX_EVENTS];} WSANETWORKEVENTS, *LPWSANETWORKEVENTS;#define MAX_PROTOCOL_CHAIN 7#define BASE_PROTOCOL 1#define LAYERED_PROTOCOL 0typedef enum _WSAESETSERVICEOP{ RNRSERVICE_REGISTER=0, RNRSERVICE_DEREGISTER, RNRSERVICE_DELETE} WSAESETSERVICEOP, *PWSAESETSERVICEOP, *LPWSAESETSERVICEOP;typedef struct _AFPROTOCOLS { INT iAddressFamily; INT iProtocol;} AFPROTOCOLS, *PAFPROTOCOLS, *LPAFPROTOCOLS;typedef enum _WSAEcomparator{ COMP_EQUAL = 0, COMP_NOTLESS} WSAECOMPARATOR, *PWSAECOMPARATOR, *LPWSAECOMPARATOR;typedef struct _WSAVersion{ DWORD dwVersion; WSAECOMPARATOR ecHow;} WSAVERSION, *PWSAVERSION, *LPWSAVERSION;#ifndef __CSADDR_T_DEFINED /* also in nspapi.h */#define __CSADDR_T_DEFINEDtypedef struct _SOCKET_ADDRESS { LPSOCKADDR lpSockaddr; INT iSockaddrLength;} SOCKET_ADDRESS,*PSOCKET_ADDRESS,*LPSOCKET_ADDRESS;typedef struct _CSADDR_INFO { SOCKET_ADDRESS LocalAddr; SOCKET_ADDRESS RemoteAddr; INT iSocketType; INT iProtocol;} CSADDR_INFO,*PCSADDR_INFO,*LPCSADDR_INFO;#endiftypedef struct _SOCKET_ADDRESS_LIST { INT iAddressCount; SOCKET_ADDRESS Address[1];} SOCKET_ADDRESS_LIST, * LPSOCKET_ADDRESS_LIST;#ifndef __BLOB_T_DEFINED /* also in wtypes.h and nspapi.h */#define __BLOB_T_DEFINEDtypedef struct _BLOB { ULONG cbSize; BYTE *pBlobData;} BLOB,*PBLOB,*LPBLOB;#endiftypedef struct _WSAQuerySetA{ DWORD dwSize; LPSTR lpszServiceInstanceName; LPGUID lpServiceClassId; LPWSAVERSION lpVersion; LPSTR lpszComment; DWORD dwNameSpace; LPGUID lpNSProviderId; LPSTR lpszContext; DWORD dwNumberOfProtocols; LPAFPROTOCOLS lpafpProtocols; LPSTR lpszQueryString; DWORD dwNumberOfCsAddrs; LPCSADDR_INFO lpcsaBuffer; DWORD dwOutputFlags; LPBLOB lpBlob;} WSAQUERYSETA, *PWSAQUERYSETA, *LPWSAQUERYSETA;typedef struct _WSAQuerySetW{ DWORD dwSize; LPWSTR lpszServiceInstanceName; LPGUID lpServiceClassId; LPWSAVERSION lpVersion; LPWSTR lpszComment; DWORD dwNameSpace; LPGUID lpNSProviderId; LPWSTR lpszContext; DWORD dwNumberOfProtocols; LPAFPROTOCOLS lpafpProtocols; LPWSTR lpszQueryString; DWORD dwNumberOfCsAddrs; LPCSADDR_INFO lpcsaBuffer; DWORD dwOutputFlags; LPBLOB lpBlob;} WSAQUERYSETW, *PWSAQUERYSETW, *LPWSAQUERYSETW;#ifdef UNICODEtypedef WSAQUERYSETW WSAQUERYSET;typedef PWSAQUERYSETW PWSAQUERYSET;typedef LPWSAQUERYSETW LPWSAQUERYSET;#elsetypedef WSAQUERYSETA WSAQUERYSET;typedef PWSAQUERYSETA PWSAQUERYSET;typedef LPWSAQUERYSETA LPWSAQUERYSET;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -