📄 winsock2.h
字号:
/* Definitions for winsock 2 Initially taken from the Wine project. Portions Copyright (c) 1980, 1983, 1988, 1993 The Regents of the University of California. All rights reserved. Portions Copyright (c) 1993 by Digital Equipment Corporation. */#if !(defined _WINSOCK2_H || defined _WINSOCK_H)#define _WINSOCK2_H#define _WINSOCK_H /* to prevent later inclusion of winsock.h */#if __GNUC__ >=3#pragma GCC system_header#endif#define _GNU_H_WINDOWS32_SOCKETS#include <windows.h>#ifdef __cplusplusextern "C" {#endif/* Names common to Winsock1.1 and Winsock2 */#if !defined ( _BSDTYPES_DEFINED )/* also defined in gmon.h and in cygwin's sys/types */typedef unsigned char u_char;typedef unsigned short u_short;typedef unsigned int u_int;typedef unsigned long u_long;#define _BSDTYPES_DEFINED#endif /* ! def _BSDTYPES_DEFINED */typedef u_int SOCKET;#ifndef FD_SETSIZE#define FD_SETSIZE 64#endif/* shutdown() how types */#define SD_RECEIVE 0x00#define SD_SEND 0x01#define SD_BOTH 0x02#ifndef _SYS_TYPES_FD_SET/* fd_set may be defined by the newlib <sys/types.h> * if __USE_W32_SOCKETS not defined. */#ifdef fd_set#undef fd_set#endiftypedef struct fd_set { u_int fd_count; SOCKET fd_array[FD_SETSIZE];} fd_set;int PASCAL __WSAFDIsSet(SOCKET,fd_set*);#ifndef FD_CLR#define FD_CLR(fd,set) do { u_int __i;\for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\ if (((fd_set *)(set))->fd_array[__i] == (fd)) {\ while (__i < ((fd_set *)(set))->fd_count-1) {\ ((fd_set*)(set))->fd_array[__i] = ((fd_set*)(set))->fd_array[__i+1];\ __i++;\ }\ ((fd_set*)(set))->fd_count--;\ break;\ }\}\} while (0)#endif#ifndef FD_SET/* this differs from the define in winsock.h and in cygwin sys/types.h */#define FD_SET(fd, set) do { u_int __i;\for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\ if (((fd_set *)(set))->fd_array[__i] == (fd)) {\ break;\ }\}\if (__i == ((fd_set *)(set))->fd_count) {\ if (((fd_set *)(set))->fd_count < FD_SETSIZE) {\ ((fd_set *)(set))->fd_array[__i] = (fd);\ ((fd_set *)(set))->fd_count++;\ }\}\} while(0)#endif#ifndef FD_ZERO#define FD_ZERO(set) (((fd_set *)(set))->fd_count=0)#endif#ifndef FD_ISSET#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set *)(set))#endif#elif !defined (USE_SYS_TYPES_FD_SET)#warning "fd_set and associated macros have been defined in sys/types. \ This may cause runtime problems with W32 sockets" #endif /* ndef _SYS_TYPES_FD_SET */#if !(defined (__INSIDE_CYGWIN__) || (__INSIDE_MSYS__))#ifndef _TIMEVAL_DEFINED /* also in sys/time.h */#define _TIMEVAL_DEFINEDstruct timeval { long tv_sec; long tv_usec;};#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)#define timercmp(tvp, uvp, cmp) \ (((tvp)->tv_sec != (uvp)->tv_sec) ? \ ((tvp)->tv_sec cmp (uvp)->tv_sec) : \ ((tvp)->tv_usec cmp (uvp)->tv_usec))#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0#endif /* _TIMEVAL_DEFINED */struct hostent { char *h_name; char **h_aliases; short h_addrtype; short h_length; char **h_addr_list;#define h_addr h_addr_list[0]};struct linger { u_short l_onoff; u_short l_linger;};#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */#define IOCPARM_MASK 0x7f#define IOC_VOID 0x20000000#define IOC_OUT 0x40000000#define IOC_IN 0x80000000#define IOC_INOUT (IOC_IN|IOC_OUT)#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))#define _IO(x,y) (IOC_VOID|((x)<<8)|(y))#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))#define FIONBIO _IOW('f', 126, u_long)#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */#define FIONREAD _IOR('f', 127, u_long)#define FIOASYNC _IOW('f', 125, u_long)#define SIOCSHIWAT _IOW('s', 0, u_long)#define SIOCGHIWAT _IOR('s', 1, u_long)#define SIOCSLOWAT _IOW('s', 2, u_long)#define SIOCGLOWAT _IOR('s', 3, u_long)#define SIOCATMARK _IOR('s', 7, u_long)#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))struct netent { char * n_name; char **n_aliases; short n_addrtype; u_long n_net;};struct servent { char *s_name; char **s_aliases; short s_port; char *s_proto;};struct protoent { char *p_name; char **p_aliases; short p_proto;};#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */#define IPPROTO_IP 0#define IPPROTO_ICMP 1#define IPPROTO_IGMP 2#define IPPROTO_GGP 3#define IPPROTO_TCP 6#define IPPROTO_PUP 12#define IPPROTO_UDP 17#define IPPROTO_IDP 22#define IPPROTO_ND 77#define IPPROTO_RAW 255#define IPPROTO_MAX 256/* IPv6 options */#define IPPROTO_HOPOPTS 0 /* IPv6 Hop-by-Hop options */#define IPPROTO_IPV6 41 /* IPv6 header */#define IPPROTO_ROUTING 43 /* IPv6 Routing header */#define IPPROTO_FRAGMENT 44 /* IPv6 fragmentation header */#define IPPROTO_ESP 50 /* encapsulating security payload */#define IPPROTO_AH 51 /* authentication header */#define IPPROTO_ICMPV6 58 /* ICMPv6 */#define IPPROTO_NONE 59 /* IPv6 no next header */#define IPPROTO_DSTOPTS 60 /* IPv6 Destination options */#define IPPORT_ECHO 7#define IPPORT_DISCARD 9#define IPPORT_SYSTAT 11#define IPPORT_DAYTIME 13#define IPPORT_NETSTAT 15#define IPPORT_FTP 21#define IPPORT_TELNET 23#define IPPORT_SMTP 25#define IPPORT_TIMESERVER 37#define IPPORT_NAMESERVER 42#define IPPORT_WHOIS 43#define IPPORT_MTP 57#define IPPORT_TFTP 69#define IPPORT_RJE 77#define IPPORT_FINGER 79#define IPPORT_TTYLINK 87#define IPPORT_SUPDUP 95#define IPPORT_EXECSERVER 512#define IPPORT_LOGINSERVER 513#define IPPORT_CMDSERVER 514#define IPPORT_EFSSERVER 520#define IPPORT_BIFFUDP 512#define IPPORT_WHOSERVER 513#define IPPORT_ROUTESERVER 520#define IPPORT_RESERVED 1024#define IMPLINK_IP 155#define IMPLINK_LOWEXPER 156#define IMPLINK_HIGHEXPER 158struct in_addr { union { struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; struct { u_short s_w1,s_w2; } S_un_w; u_long S_addr; } S_un;#define s_addr S_un.S_addr#define s_host S_un.S_un_b.s_b2#define s_net S_un.S_un_b.s_b1#define s_imp S_un.S_un_w.s_w2#define s_impno S_un.S_un_b.s_b4#define s_lh S_un.S_un_b.s_b3};#define IN_CLASSA(i) ((long)(i)&0x80000000)#define IN_CLASSA_NET 0xff000000#define IN_CLASSA_NSHIFT 24#define IN_CLASSA_HOST 0x00ffffff#define IN_CLASSA_MAX 128#define IN_CLASSB(i) (((long)(i)&0xc0000000)==0x80000000)#define IN_CLASSB_NET 0xffff0000#define IN_CLASSB_NSHIFT 16#define IN_CLASSB_HOST 0x0000ffff#define IN_CLASSB_MAX 65536#define IN_CLASSC(i) (((long)(i)&0xe0000000)==0xc0000000)#define IN_CLASSC_NET 0xffffff00#define IN_CLASSC_NSHIFT 8#define IN_CLASSC_HOST 0xff#define INADDR_ANY (u_long)0#define INADDR_LOOPBACK 0x7f000001#define INADDR_BROADCAST (u_long)0xffffffff#define INADDR_NONE 0xffffffffstruct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8];};#define WSADESCRIPTION_LEN 256#define WSASYS_STATUS_LEN 128typedef struct WSAData { WORD wVersion; WORD wHighVersion; char szDescription[WSADESCRIPTION_LEN+1]; char szSystemStatus[WSASYS_STATUS_LEN+1]; unsigned short iMaxSockets; unsigned short iMaxUdpDg; char * lpVendorInfo;} WSADATA;typedef WSADATA *LPWSADATA;#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))#define IP_OPTIONS 1#define SO_DEBUG 1#define SO_ACCEPTCONN 2#define SO_REUSEADDR 4#define SO_KEEPALIVE 8#define SO_DONTROUTE 16#define SO_BROADCAST 32#define SO_USELOOPBACK 64#define SO_LINGER 128#define SO_OOBINLINE 256#define SO_DONTLINGER (u_int)(~SO_LINGER)#define SO_SNDBUF 0x1001#define SO_RCVBUF 0x1002#define SO_SNDLOWAT 0x1003#define SO_RCVLOWAT 0x1004#define SO_SNDTIMEO 0x1005#define SO_RCVTIMEO 0x1006#define SO_ERROR 0x1007#define SO_TYPE 0x1008#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */#define INVALID_SOCKET (SOCKET)(~0)#define SOCKET_ERROR (-1)#define SOCK_STREAM 1#define SOCK_DGRAM 2#define SOCK_RAW 3#define SOCK_RDM 4#define SOCK_SEQPACKET 5#define TCP_NODELAY 0x0001#define AF_UNSPEC 0#define AF_UNIX 1#define AF_INET 2#define AF_IMPLINK 3#define AF_PUP 4#define AF_CHAOS 5#define AF_IPX 6#define AF_NS 6#define AF_ISO 7#define AF_OSI AF_ISO#define AF_ECMA 8#define AF_DATAKIT 9#define AF_CCITT 10#define AF_SNA 11#define AF_DECnet 12#define AF_DLI 13#define AF_LAT 14#define AF_HYLINK 15#define AF_APPLETALK 16#define AF_NETBIOS 17#define AF_VOICEVIEW 18#define AF_FIREFOX 19#define AF_UNKNOWN1 20#define AF_BAN 21#define AF_ATM 22#define AF_INET6 23#define AF_CLUSTER 24#define AF_12844 25#define AF_IRDA 26#define AF_NETDES 28 #if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))#define AF_MAX 29struct sockaddr { u_short sa_family; char sa_data[14];};#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) *//* Portable IPv6/IPv4 version of sockaddr. Uses padding to force 8 byte alignment and maximum size of 128 bytes */struct sockaddr_storage { short ss_family; char __ss_pad1[6]; /* pad to 8 */ __int64 __ss_align; /* force alignment */ char __ss_pad2[112]; /* pad to 128 */};struct sockproto { u_short sp_family; u_short sp_protocol;};#define PF_UNSPEC AF_UNSPEC#define PF_UNIX AF_UNIX#define PF_INET AF_INET#define PF_IMPLINK AF_IMPLINK#define PF_PUP AF_PUP#define PF_CHAOS AF_CHAOS#define PF_NS AF_NS#define PF_IPX AF_IPX#define PF_ISO AF_ISO#define PF_OSI AF_OSI#define PF_ECMA AF_ECMA#define PF_DATAKIT AF_DATAKIT#define PF_CCITT AF_CCITT#define PF_SNA AF_SNA#define PF_DECnet AF_DECnet#define PF_DLI AF_DLI#define PF_LAT AF_LAT#define PF_HYLINK AF_HYLINK#define PF_APPLETALK AF_APPLETALK#define PF_VOICEVIEW AF_VOICEVIEW#define PF_FIREFOX AF_FIREFOX#define PF_UNKNOWN1 AF_UNKNOWN1#define PF_BAN AF_BAN#define PF_ATM AF_ATM#define PF_INET6 AF_INET6#define PF_MAX AF_MAX#define SOL_SOCKET 0xffff#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))#define SOMAXCONN 0x7fffffff /* (5) in WinSock1.1 */#define MSG_OOB 1#define MSG_PEEK 2#define MSG_DONTROUTE 4#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */#define MSG_MAXIOVLEN 16#define MSG_PARTIAL 0x8000#define MAXGETHOSTSTRUCT 1024#define FD_READ_BIT 0#define FD_READ (1 << FD_READ_BIT) #define FD_WRITE_BIT 1#define FD_WRITE (1 << FD_WRITE_BIT)#define FD_OOB_BIT 2#define FD_OOB (1 << FD_OOB_BIT)#define FD_ACCEPT_BIT 3#define FD_ACCEPT (1 << FD_ACCEPT_BIT)#define FD_CONNECT_BIT 4#define FD_CONNECT (1 << FD_CONNECT_BIT)#define FD_CLOSE_BIT 5#define FD_CLOSE (1 << FD_CLOSE_BIT)/* winsock1.1 defines stop at FD_CLOSE (32) */#define FD_QOS_BIT 6#define FD_QOS (1 << FD_QOS_BIT)#define FD_GROUP_QOS_BIT 7#define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT)#define FD_ROUTING_INTERFACE_CHANGE_BIT 8#define FD_ROUTING_INTERFACE_CHANGE (1 << FD_ROUTING_INTERFACE_CHANGE_BIT)#define FD_ADDRESS_LIST_CHANGE_BIT 9#define FD_ADDRESS_LIST_CHANGE (1 << FD_ADDRESS_LIST_CHANGE_BIT)#define FD_MAX_EVENTS 10#define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -