1 |
/* |
2 |
|
3 |
Definitions for winsock 1.1 |
4 |
|
5 |
Portions Copyright (c) 1980, 1983, 1988, 1993 |
6 |
The Regents of the University of California. All rights reserved. |
7 |
|
8 |
Portions Copyright (c) 1993 by Digital Equipment Corporation. |
9 |
*/ |
10 |
|
11 |
#ifndef _WINSOCK_H |
12 |
#define _WINSOCK_H |
13 |
#if __GNUC__ >=3 |
14 |
#pragma GCC system_header |
15 |
#endif |
16 |
|
17 |
#define _GNU_H_WINDOWS32_SOCKETS |
18 |
|
19 |
#include <windows.h> |
20 |
|
21 |
#ifdef __cplusplus |
22 |
extern "C" { |
23 |
#endif |
24 |
|
25 |
#if !defined ( _BSDTYPES_DEFINED ) |
26 |
/* also defined in gmon.h and in cygwin's sys/types */ |
27 |
typedef unsigned char u_char; |
28 |
typedef unsigned short u_short; |
29 |
typedef unsigned int u_int; |
30 |
typedef unsigned long u_long; |
31 |
#define _BSDTYPES_DEFINED |
32 |
#endif /* !defined _BSDTYPES_DEFINED */ |
33 |
typedef u_int SOCKET; |
34 |
#ifndef FD_SETSIZE |
35 |
#define FD_SETSIZE 64 |
36 |
#endif |
37 |
|
38 |
/* shutdown() how types */ |
39 |
#define SD_RECEIVE 0x00 |
40 |
#define SD_SEND 0x01 |
41 |
#define SD_BOTH 0x02 |
42 |
|
43 |
#ifndef _SYS_TYPES_FD_SET |
44 |
/* fd_set may have be defined by the newlib <sys/types.h> |
45 |
* if __USE_W32_SOCKETS not defined. |
46 |
*/ |
47 |
#ifdef fd_set |
48 |
#undef fd_set |
49 |
#endif |
50 |
typedef struct fd_set { |
51 |
u_int fd_count; |
52 |
SOCKET fd_array[FD_SETSIZE]; |
53 |
} fd_set; |
54 |
int PASCAL __WSAFDIsSet(SOCKET,fd_set*); |
55 |
#ifndef FD_CLR |
56 |
#define FD_CLR(fd,set) do { u_int __i;\ |
57 |
for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\ |
58 |
if (((fd_set *)(set))->fd_array[__i] == (fd)) {\ |
59 |
while (__i < ((fd_set *)(set))->fd_count-1) {\ |
60 |
((fd_set*)(set))->fd_array[__i] = ((fd_set*)(set))->fd_array[__i+1];\ |
61 |
__i++;\ |
62 |
}\ |
63 |
((fd_set*)(set))->fd_count--;\ |
64 |
break;\ |
65 |
}\ |
66 |
}\ |
67 |
} while (0) |
68 |
#endif |
69 |
#ifndef FD_SET |
70 |
#define FD_SET(fd, set) do { \ |
71 |
if (((fd_set *)(set))->fd_count < FD_SETSIZE) \ |
72 |
((fd_set *)(set))->fd_array[((fd_set *)(set))->fd_count++]=(fd);\ |
73 |
}while (0) |
74 |
#endif |
75 |
#ifndef FD_ZERO |
76 |
#define FD_ZERO(set) (((fd_set *)(set))->fd_count=0) |
77 |
#endif |
78 |
#ifndef FD_ISSET |
79 |
#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set *)(set)) |
80 |
#endif |
81 |
#elif !defined(USE_SYS_TYPES_FD_SET) |
82 |
#warning "fd_set and associated macros have been defined in sys/types. \ |
83 |
This can cause runtime problems with W32 sockets" |
84 |
#endif /* ndef _SYS_TYPES_FD_SET */ |
85 |
|
86 |
#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) |
87 |
#ifndef _TIMEVAL_DEFINED /* also in sys/time.h */ |
88 |
#define _TIMEVAL_DEFINED |
89 |
struct timeval { |
90 |
long tv_sec; |
91 |
long tv_usec; |
92 |
}; |
93 |
#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) |
94 |
#define timercmp(tvp, uvp, cmp) \ |
95 |
(((tvp)->tv_sec != (uvp)->tv_sec) ? \ |
96 |
((tvp)->tv_sec cmp (uvp)->tv_sec) : \ |
97 |
((tvp)->tv_usec cmp (uvp)->tv_usec)) |
98 |
#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0 |
99 |
#endif /* _TIMEVAL_DEFINED */ |
100 |
struct hostent { |
101 |
char *h_name; |
102 |
char **h_aliases; |
103 |
short h_addrtype; |
104 |
short h_length; |
105 |
char **h_addr_list; |
106 |
#define h_addr h_addr_list[0] |
107 |
}; |
108 |
struct linger { |
109 |
u_short l_onoff; |
110 |
u_short l_linger; |
111 |
}; |
112 |
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ |
113 |
#define IOCPARM_MASK 0x7f |
114 |
#define IOC_VOID 0x20000000 |
115 |
#define IOC_OUT 0x40000000 |
116 |
#define IOC_IN 0x80000000 |
117 |
#define IOC_INOUT (IOC_IN|IOC_OUT) |
118 |
|
119 |
#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) |
120 |
#define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) |
121 |
#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) |
122 |
#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) |
123 |
#define FIONBIO _IOW('f', 126, u_long) |
124 |
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ |
125 |
|
126 |
#define FIONREAD _IOR('f', 127, u_long) |
127 |
#define FIOASYNC _IOW('f', 125, u_long) |
128 |
#define SIOCSHIWAT _IOW('s', 0, u_long) |
129 |
#define SIOCGHIWAT _IOR('s', 1, u_long) |
130 |
#define SIOCSLOWAT _IOW('s', 2, u_long) |
131 |
#define SIOCGLOWAT _IOR('s', 3, u_long) |
132 |
#define SIOCATMARK _IOR('s', 7, u_long) |
133 |
|
134 |
#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) |
135 |
struct netent { |
136 |
char * n_name; |
137 |
char **n_aliases; |
138 |
short n_addrtype; |
139 |
u_long n_net; |
140 |
}; |
141 |
struct servent { |
142 |
char *s_name; |
143 |
char **s_aliases; |
144 |
short s_port; |
145 |
char *s_proto; |
146 |
}; |
147 |
struct protoent { |
148 |
char *p_name; |
149 |
char **p_aliases; |
150 |
short p_proto; |
151 |
}; |
152 |
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ |
153 |
|
154 |
#define IPPROTO_IP 0 |
155 |
#define IPPROTO_ICMP 1 |
156 |
#define IPPROTO_IGMP 2 |
157 |
#define IPPROTO_GGP 3 |
158 |
#define IPPROTO_TCP 6 |
159 |
#define IPPROTO_PUP 12 |
160 |
#define IPPROTO_UDP 17 |
161 |
#define IPPROTO_IDP 22 |
162 |
#define IPPROTO_ND 77 |
163 |
#define IPPROTO_RAW 255 |
164 |
#define IPPROTO_MAX 256 |
165 |
#define IPPORT_ECHO 7 |
166 |
#define IPPORT_DISCARD 9 |
167 |
#define IPPORT_SYSTAT 11 |
168 |
#define IPPORT_DAYTIME 13 |
169 |
#define IPPORT_NETSTAT 15 |
170 |
#define IPPORT_FTP 21 |
171 |
#define IPPORT_TELNET 23 |
172 |
#define IPPORT_SMTP 25 |
173 |
#define IPPORT_TIMESERVER 37 |
174 |
#define IPPORT_NAMESERVER 42 |
175 |
#define IPPORT_WHOIS 43 |
176 |
#define IPPORT_MTP 57 |
177 |
#define IPPORT_TFTP 69 |
178 |
#define IPPORT_RJE 77 |
179 |
#define IPPORT_FINGER 79 |
180 |
#define IPPORT_TTYLINK 87 |
181 |
#define IPPORT_SUPDUP 95 |
182 |
#define IPPORT_EXECSERVER 512 |
183 |
#define IPPORT_LOGINSERVER 513 |
184 |
#define IPPORT_CMDSERVER 514 |
185 |
#define IPPORT_EFSSERVER 520 |
186 |
#define IPPORT_BIFFUDP 512 |
187 |
#define IPPORT_WHOSERVER 513 |
188 |
#define IPPORT_ROUTESERVER 520 |
189 |
#define IPPORT_RESERVED 1024 |
190 |
#define IMPLINK_IP 155 |
191 |
#define IMPLINK_LOWEXPER 156 |
192 |
#define IMPLINK_HIGHEXPER 158 |
193 |
struct in_addr { |
194 |
union { |
195 |
struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; |
196 |
struct { u_short s_w1,s_w2; } S_un_w; |
197 |
u_long S_addr; |
198 |
} S_un; |
199 |
#define s_addr S_un.S_addr |
200 |
#define s_host S_un.S_un_b.s_b2 |
201 |
#define s_net S_un.S_un_b.s_b1 |
202 |
#define s_imp S_un.S_un_w.s_w2 |
203 |
#define s_impno S_un.S_un_b.s_b4 |
204 |
#define s_lh S_un.S_un_b.s_b3 |
205 |
}; |
206 |
#define IN_CLASSA(i) (((long)(i)&0x80000000) == 0) |
207 |
#define IN_CLASSA_NET 0xff000000 |
208 |
#define IN_CLASSA_NSHIFT 24 |
209 |
#define IN_CLASSA_HOST 0x00ffffff |
210 |
#define IN_CLASSA_MAX 128 |
211 |
#define IN_CLASSB(i) (((long)(i)&0xc0000000)==0x80000000) |
212 |
#define IN_CLASSB_NET 0xffff0000 |
213 |
#define IN_CLASSB_NSHIFT 16 |
214 |
#define IN_CLASSB_HOST 0x0000ffff |
215 |
#define IN_CLASSB_MAX 65536 |
216 |
#define IN_CLASSC(i) (((long)(i)&0xe0000000)==0xc0000000) |
217 |
#define IN_CLASSC_NET 0xffffff00 |
218 |
#define IN_CLASSC_NSHIFT 8 |
219 |
#define IN_CLASSC_HOST 0xff |
220 |
#define INADDR_ANY (u_long)0 |
221 |
#define INADDR_LOOPBACK 0x7f000001 |
222 |
#define INADDR_BROADCAST (u_long)0xffffffff |
223 |
#define INADDR_NONE 0xffffffff |
224 |
struct sockaddr_in { |
225 |
short sin_family; |
226 |
u_short sin_port; |
227 |
struct in_addr sin_addr; |
228 |
char sin_zero[8]; |
229 |
}; |
230 |
#define WSADESCRIPTION_LEN 256 |
231 |
#define WSASYS_STATUS_LEN 128 |
232 |
typedef struct WSAData { |
233 |
WORD wVersion; |
234 |
WORD wHighVersion; |
235 |
char szDescription[WSADESCRIPTION_LEN+1]; |
236 |
char szSystemStatus[WSASYS_STATUS_LEN+1]; |
237 |
unsigned short iMaxSockets; |
238 |
unsigned short iMaxUdpDg; |
239 |
char * lpVendorInfo; |
240 |
} WSADATA; |
241 |
typedef WSADATA *LPWSADATA; |
242 |
|
243 |
#ifndef __INSIDE_MSYS__ |
244 |
#define IP_OPTIONS 1 |
245 |
#define SO_DEBUG 1 |
246 |
#define SO_ACCEPTCONN 2 |
247 |
#define SO_REUSEADDR 4 |
248 |
#define SO_KEEPALIVE 8 |
249 |
#define SO_DONTROUTE 16 |
250 |
#define SO_BROADCAST 32 |
251 |
#define SO_USELOOPBACK 64 |
252 |
#define SO_LINGER 128 |
253 |
#define SO_OOBINLINE 256 |
254 |
#define SO_DONTLINGER (u_int)(~SO_LINGER) |
255 |
#define SO_SNDBUF 0x1001 |
256 |
#define SO_RCVBUF 0x1002 |
257 |
#define SO_SNDLOWAT 0x1003 |
258 |
#define SO_RCVLOWAT 0x1004 |
259 |
#define SO_SNDTIMEO 0x1005 |
260 |
#define SO_RCVTIMEO 0x1006 |
261 |
#define SO_ERROR 0x1007 |
262 |
#define SO_TYPE 0x1008 |
263 |
#endif /* !__INSIDE_MSYS__ */ |
264 |
/* |
265 |
* Note that the next 5 IP defines are specific to WinSock 1.1 (wsock32.dll). |
266 |
* They will cause errors or unexpected results if used with the |
267 |
* (gs)etsockopts exported from the WinSock 2 lib, ws2_32.dll. Refer ws2tcpip.h. |
268 |
*/ |
269 |
#define IP_MULTICAST_IF 2 |
270 |
#define IP_MULTICAST_TTL 3 |
271 |
#define IP_MULTICAST_LOOP 4 |
272 |
#define IP_ADD_MEMBERSHIP 5 |
273 |
#define IP_DROP_MEMBERSHIP 6 |
274 |
|
275 |
#define IP_DEFAULT_MULTICAST_TTL 1 |
276 |
#define IP_DEFAULT_MULTICAST_LOOP 1 |
277 |
#define IP_MAX_MEMBERSHIPS 20 |
278 |
struct ip_mreq { |
279 |
struct in_addr imr_multiaddr; |
280 |
struct in_addr imr_interface; |
281 |
}; |
282 |
#define INVALID_SOCKET (SOCKET)(~0) |
283 |
#define SOCKET_ERROR (-1) |
284 |
#define SOCK_STREAM 1 |
285 |
#define SOCK_DGRAM 2 |
286 |
#define SOCK_RAW 3 |
287 |
#define SOCK_RDM 4 |
288 |
#define SOCK_SEQPACKET 5 |
289 |
#define TCP_NODELAY 0x0001 |
290 |
#define AF_UNSPEC 0 |
291 |
#define AF_UNIX 1 |
292 |
#define AF_INET 2 |
293 |
#define AF_IMPLINK 3 |
294 |
#define AF_PUP 4 |
295 |
#define AF_CHAOS 5 |
296 |
#define AF_IPX 6 |
297 |
#define AF_NS 6 |
298 |
#define AF_ISO 7 |
299 |
#define AF_OSI AF_ISO |
300 |
#define AF_ECMA 8 |
301 |
#define AF_DATAKIT 9 |
302 |
#define AF_CCITT 10 |
303 |
#define AF_SNA 11 |
304 |
#define AF_DECnet 12 |
305 |
#define AF_DLI 13 |
306 |
#define AF_LAT 14 |
307 |
#define AF_HYLINK 15 |
308 |
#define AF_APPLETALK 16 |
309 |
#define AF_NETBIOS 17 |
310 |
#define AF_VOICEVIEW 18 |
311 |
#define AF_FIREFOX 19 |
312 |
#define AF_UNKNOWN1 20 |
313 |
#define AF_BAN 21 |
314 |
#define AF_ATM 22 |
315 |
#define AF_INET6 23 |
316 |
#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) |
317 |
#define AF_MAX 24 |
318 |
struct sockaddr { |
319 |
u_short sa_family; |
320 |
char sa_data[14]; |
321 |
}; |
322 |
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ |
323 |
|
324 |
struct sockproto { |
325 |
u_short sp_family; |
326 |
u_short sp_protocol; |
327 |
}; |
328 |
#define PF_UNSPEC AF_UNSPEC |
329 |
#define PF_UNIX AF_UNIX |
330 |
#define PF_INET AF_INET |
331 |
#define PF_IMPLINK AF_IMPLINK |
332 |
#define PF_PUP AF_PUP |
333 |
#define PF_CHAOS AF_CHAOS |
334 |
#define PF_NS AF_NS |
335 |
#define PF_IPX AF_IPX |
336 |
#define PF_ISO AF_ISO |
337 |
#define PF_OSI AF_OSI |
338 |
#define PF_ECMA AF_ECMA |
339 |
#define PF_DATAKIT AF_DATAKIT |
340 |
#define PF_CCITT AF_CCITT |
341 |
#define PF_SNA AF_SNA |
342 |
#define PF_DECnet AF_DECnet |
343 |
#define PF_DLI AF_DLI |
344 |
#define PF_LAT AF_LAT |
345 |
#define PF_HYLINK AF_HYLINK |
346 |
#define PF_APPLETALK AF_APPLETALK |
347 |
#define PF_VOICEVIEW AF_VOICEVIEW |
348 |
#define PF_FIREFOX AF_FIREFOX |
349 |
#define PF_UNKNOWN1 AF_UNKNOWN1 |
350 |
#define PF_BAN AF_BAN |
351 |
#define PF_ATM AF_ATM |
352 |
#define PF_INET6 AF_INET6 |
353 |
#define PF_MAX AF_MAX |
354 |
#define SOL_SOCKET 0xffff |
355 |
#define SOMAXCONN 5 |
356 |
#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) |
357 |
#define MSG_OOB 1 |
358 |
#define MSG_PEEK 2 |
359 |
#define MSG_DONTROUTE 4 |
360 |
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ |
361 |
#define MSG_MAXIOVLEN 16 |
362 |
#define MSG_PARTIAL 0x8000 |
363 |
#define MAXGETHOSTSTRUCT 1024 |
364 |
#define FD_READ 1 |
365 |
#define FD_WRITE 2 |
366 |
#define FD_OOB 4 |
367 |
#define FD_ACCEPT 8 |
368 |
#define FD_CONNECT 16 |
369 |
#define FD_CLOSE 32 |
370 |
#ifndef WSABASEERR |
371 |
#define WSABASEERR 10000 |
372 |
#define WSAEINTR (WSABASEERR+4) |
373 |
#define WSAEBADF (WSABASEERR+9) |
374 |
#define WSAEACCES (WSABASEERR+13) |
375 |
#define WSAEFAULT (WSABASEERR+14) |
376 |
#define WSAEINVAL (WSABASEERR+22) |
377 |
#define WSAEMFILE (WSABASEERR+24) |
378 |
#define WSAEWOULDBLOCK (WSABASEERR+35) |
379 |
#define WSAEINPROGRESS (WSABASEERR+36) |
380 |
#define WSAEALREADY (WSABASEERR+37) |
381 |
#define WSAENOTSOCK (WSABASEERR+38) |
382 |
#define WSAEDESTADDRREQ (WSABASEERR+39) |
383 |
#define WSAEMSGSIZE (WSABASEERR+40) |
384 |
#define WSAEPROTOTYPE (WSABASEERR+41) |
385 |
#define WSAENOPROTOOPT (WSABASEERR+42) |
386 |
#define WSAEPROTONOSUPPORT (WSABASEERR+43) |
387 |
#define WSAESOCKTNOSUPPORT (WSABASEERR+44) |
388 |
#define WSAEOPNOTSUPP (WSABASEERR+45) |
389 |
#define WSAEPFNOSUPPORT (WSABASEERR+46) |
390 |
#define WSAEAFNOSUPPORT (WSABASEERR+47) |
391 |
#define WSAEADDRINUSE (WSABASEERR+48) |
392 |
#define WSAEADDRNOTAVAIL (WSABASEERR+49) |
393 |
#define WSAENETDOWN (WSABASEERR+50) |
394 |
#define WSAENETUNREACH (WSABASEERR+51) |
395 |
#define WSAENETRESET (WSABASEERR+52) |
396 |
#define WSAECONNABORTED (WSABASEERR+53) |
397 |
#define WSAECONNRESET (WSABASEERR+54) |
398 |
#define WSAENOBUFS (WSABASEERR+55) |
399 |
#define WSAEISCONN (WSABASEERR+56) |
400 |
#define WSAENOTCONN (WSABASEERR+57) |
401 |
#define WSAESHUTDOWN (WSABASEERR+58) |
402 |
#define WSAETOOMANYREFS (WSABASEERR+59) |
403 |
#define WSAETIMEDOUT (WSABASEERR+60) |
404 |
#define WSAECONNREFUSED (WSABASEERR+61) |
405 |
#define WSAELOOP (WSABASEERR+62) |
406 |
#define WSAENAMETOOLONG (WSABASEERR+63) |
407 |
#define WSAEHOSTDOWN (WSABASEERR+64) |
408 |
#define WSAEHOSTUNREACH (WSABASEERR+65) |
409 |
#define WSAENOTEMPTY (WSABASEERR+66) |
410 |
#define WSAEPROCLIM (WSABASEERR+67) |
411 |
#define WSAEUSERS (WSABASEERR+68) |
412 |
#define WSAEDQUOT (WSABASEERR+69) |
413 |
#define WSAESTALE (WSABASEERR+70) |
414 |
#define WSAEREMOTE (WSABASEERR+71) |
415 |
#define WSAEDISCON (WSABASEERR+101) |
416 |
#define WSASYSNOTREADY (WSABASEERR+91) |
417 |
#define WSAVERNOTSUPPORTED (WSABASEERR+92) |
418 |
#define WSANOTINITIALISED (WSABASEERR+93) |
419 |
#define WSAHOST_NOT_FOUND (WSABASEERR+1001) |
420 |
#define WSATRY_AGAIN (WSABASEERR+1002) |
421 |
#define WSANO_RECOVERY (WSABASEERR+1003) |
422 |
#define WSANO_DATA (WSABASEERR+1004) |
423 |
#endif /* !WSABASEERR */ |
424 |
|
425 |
#define WSANO_ADDRESS WSANO_DATA |
426 |
#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) |
427 |
#define h_errno WSAGetLastError() |
428 |
#define HOST_NOT_FOUND WSAHOST_NOT_FOUND |
429 |
#define TRY_AGAIN WSATRY_AGAIN |
430 |
#define NO_RECOVERY WSANO_RECOVERY |
431 |
#define NO_DATA WSANO_DATA |
432 |
#define NO_ADDRESS WSANO_ADDRESS |
433 |
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ |
434 |
SOCKET PASCAL accept(SOCKET,struct sockaddr*,int*); |
435 |
int PASCAL bind(SOCKET,const struct sockaddr*,int); |
436 |
int PASCAL closesocket(SOCKET); |
437 |
int PASCAL connect(SOCKET,const struct sockaddr*,int); |
438 |
int PASCAL ioctlsocket(SOCKET,long,u_long *); |
439 |
int PASCAL getpeername(SOCKET,struct sockaddr*,int*); |
440 |
int PASCAL getsockname(SOCKET,struct sockaddr*,int*); |
441 |
int PASCAL getsockopt(SOCKET,int,int,char*,int*); |
442 |
unsigned long PASCAL inet_addr(const char*); |
443 |
DECLARE_STDCALL_P(char *) inet_ntoa(struct in_addr); |
444 |
int PASCAL listen(SOCKET,int); |
445 |
int PASCAL recv(SOCKET,char*,int,int); |
446 |
int PASCAL recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*); |
447 |
int PASCAL send(SOCKET,const char*,int,int); |
448 |
int PASCAL sendto(SOCKET,const char*,int,int,const struct sockaddr*,int); |
449 |
int PASCAL setsockopt(SOCKET,int,int,const char*,int); |
450 |
int PASCAL shutdown(SOCKET,int); |
451 |
SOCKET PASCAL socket(int,int,int); |
452 |
DECLARE_STDCALL_P(struct hostent *) gethostbyaddr(const char*,int,int); |
453 |
DECLARE_STDCALL_P(struct hostent *) gethostbyname(const char*); |
454 |
DECLARE_STDCALL_P(struct servent *) getservbyport(int,const char*); |
455 |
DECLARE_STDCALL_P(struct servent *) getservbyname(const char*,const char*); |
456 |
DECLARE_STDCALL_P(struct protoent *) getprotobynumber(int); |
457 |
DECLARE_STDCALL_P(struct protoent *) getprotobyname(const char*); |
458 |
int PASCAL WSAStartup(WORD,LPWSADATA); |
459 |
int PASCAL WSACleanup(void); |
460 |
void PASCAL WSASetLastError(int); |
461 |
int PASCAL WSAGetLastError(void); |
462 |
BOOL PASCAL WSAIsBlocking(void); |
463 |
int PASCAL WSAUnhookBlockingHook(void); |
464 |
FARPROC PASCAL WSASetBlockingHook(FARPROC); |
465 |
int PASCAL WSACancelBlockingCall(void); |
466 |
HANDLE PASCAL WSAAsyncGetServByName(HWND,u_int,const char*,const char*,char*,int); |
467 |
HANDLE PASCAL WSAAsyncGetServByPort(HWND,u_int,int,const char*,char*,int); |
468 |
HANDLE PASCAL WSAAsyncGetProtoByName(HWND,u_int,const char*,char*,int); |
469 |
HANDLE PASCAL WSAAsyncGetProtoByNumber(HWND,u_int,int,char*,int); |
470 |
HANDLE PASCAL WSAAsyncGetHostByName(HWND,u_int,const char*,char*,int); |
471 |
HANDLE PASCAL WSAAsyncGetHostByAddr(HWND,u_int,const char*,int,int,char*,int); |
472 |
int PASCAL WSACancelAsyncRequest(HANDLE); |
473 |
int PASCAL WSAAsyncSelect(SOCKET,HWND,u_int,long); |
474 |
#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) |
475 |
u_long PASCAL htonl(u_long); |
476 |
u_long PASCAL ntohl(u_long); |
477 |
u_short PASCAL htons(u_short); |
478 |
u_short PASCAL ntohs(u_short); |
479 |
int PASCAL select(int nfds,fd_set*,fd_set*,fd_set*,const struct timeval*); |
480 |
int PASCAL gethostname(char*,int); |
481 |
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ |
482 |
|
483 |
#define WSAMAKEASYNCREPLY(b,e) MAKELONG(b,e) |
484 |
#define WSAMAKESELECTREPLY(e,error) MAKELONG(e,error) |
485 |
#define WSAGETASYNCBUFLEN(l) LOWORD(l) |
486 |
#define WSAGETASYNCERROR(l) HIWORD(l) |
487 |
#define WSAGETSELECTEVENT(l) LOWORD(l) |
488 |
#define WSAGETSELECTERROR(l) HIWORD(l) |
489 |
|
490 |
typedef struct sockaddr SOCKADDR; |
491 |
typedef struct sockaddr *PSOCKADDR; |
492 |
typedef struct sockaddr *LPSOCKADDR; |
493 |
typedef struct sockaddr_in SOCKADDR_IN; |
494 |
typedef struct sockaddr_in *PSOCKADDR_IN; |
495 |
typedef struct sockaddr_in *LPSOCKADDR_IN; |
496 |
typedef struct linger LINGER; |
497 |
typedef struct linger *PLINGER; |
498 |
typedef struct linger *LPLINGER; |
499 |
typedef struct in_addr IN_ADDR; |
500 |
typedef struct in_addr *PIN_ADDR; |
501 |
typedef struct in_addr *LPIN_ADDR; |
502 |
typedef struct fd_set FD_SET; |
503 |
typedef struct fd_set *PFD_SET; |
504 |
typedef struct fd_set *LPFD_SET; |
505 |
typedef struct hostent HOSTENT; |
506 |
typedef struct hostent *PHOSTENT; |
507 |
typedef struct hostent *LPHOSTENT; |
508 |
typedef struct servent SERVENT; |
509 |
typedef struct servent *PSERVENT; |
510 |
typedef struct servent *LPSERVENT; |
511 |
typedef struct protoent PROTOENT; |
512 |
typedef struct protoent *PPROTOENT; |
513 |
typedef struct protoent *LPPROTOENT; |
514 |
typedef struct timeval TIMEVAL; |
515 |
typedef struct timeval *PTIMEVAL; |
516 |
typedef struct timeval *LPTIMEVAL; |
517 |
|
518 |
#ifdef __cplusplus |
519 |
} |
520 |
#endif |
521 |
/* |
522 |
* Recent MSDN docs indicate that the MS-specific extensions exported from |
523 |
* mswsock.dll (AcceptEx, TransmitFile. WSARecEx and GetAcceptExSockaddrs) are |
524 |
* declared in mswsock.h. These extensions are not supported on W9x or WinCE. |
525 |
* However, code using WinSock 1.1 API may expect the declarations and |
526 |
* associated defines to be in this header. Thus we include mswsock.h here. |
527 |
* |
528 |
* When linking against the WinSock 1.1 lib, wsock32.dll, the mswsock functions |
529 |
* are automatically routed to mswsock.dll (on platforms with support). |
530 |
* The WinSock 2 lib, ws2_32.dll, does not contain any references to |
531 |
* the mswsock extensions. |
532 |
*/ |
533 |
|
534 |
#include <mswsock.h> |
535 |
|
536 |
#endif |