📄 winsock.h
字号:
/* Definitions for winsock 1.1 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. */#ifndef _WINSOCK_H#define _WINSOCK_H#if __GNUC__ >=3#pragma GCC system_header#endif#define _GNU_H_WINDOWS32_SOCKETS#include <windows.h>#ifdef __cplusplusextern "C" {#endif#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 /* !defined _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 have 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#define FD_SET(fd, set) do { \ if (((fd_set *)(set))->fd_count < FD_SETSIZE) \ ((fd_set *)(set))->fd_array[((fd_set *)(set))->fd_count++]=(fd);\}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 can cause runtime problems with W32 sockets" #endif /* ndef _SYS_TYPES_FD_SET */#if !(defined (__INSIDE_CYGWIN__) || defined (__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#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__) *//* * Note that the next 5 IP defines are specific to WinSock 1.1 (wsock32.dll). * They will cause errors or unexpected results if used with the * (gs)etsockopts exported from the WinSock 2 lib, ws2_32.dll. Refer ws2tcpip.h. */ #define IP_MULTICAST_IF 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -