⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winsock2.h

📁 MinGW+MSYS开发必用的api参考
💻 H
📖 第 1 页 / 共 4 页
字号:
/*  Definitions for winsock 2  Contributed by 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>#ifndef WINSOCK_API_LINKAGE#ifdef __W32API_USE_DLLIMPORT__#define WINSOCK_API_LINKAGE DECLSPEC_IMPORT#else#define WINSOCK_API_LINKAGE#endif#endif#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) == 0)#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_EXCLUSIVEADDRUSE ((u_int)(~SO_REUSEADDR))#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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -