zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
SDL_net.h
Go to the documentation of this file.
1 /*
2  SDL_net: An example cross-platform network library for use with SDL
3  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
4  Copyright (C) 2012 Simeon Maxein <smaxein@googlemail.com>
5 
6  This software is provided 'as-is', without any express or implied
7  warranty. In no event will the authors be held liable for any damages
8  arising from the use of this software.
9 
10  Permission is granted to anyone to use this software for any purpose,
11  including commercial applications, and to alter it and redistribute it
12  freely, subject to the following restrictions:
13 
14  1. The origin of this software must not be misrepresented; you must not
15  claim that you wrote the original software. If you use this software
16  in a product, an acknowledgment in the product documentation would be
17  appreciated but is not required.
18  2. Altered source versions must be plainly marked as such, and must not be
19  misrepresented as being the original software.
20  3. This notice may not be removed or altered from any source distribution.
21 */
22 
23 /* $Id$ */
24 
25 #ifndef _SDL_NET_H
26 #define _SDL_NET_H
27 
28 #ifdef WITHOUT_SDL
29 #include <stdint.h>
30 typedef uint8_t Uint8;
31 typedef uint16_t Uint16;
32 typedef uint32_t Uint32;
33 
34 typedef struct SDLNet_version {
35  Uint8 major;
36  Uint8 minor;
37  Uint8 patch;
39 
40 #else /* WITHOUT_SDL */
41 
42 #include "SDL/SDL.h"
43 #include "SDL/SDL_endian.h"
44 #include "SDL/SDL_version.h"
45 
47 
48 #endif /* WITHOUT_SDL */
49 
50 #include "SDL/begin_code.h"
51 
52 /* Set up for C function definitions, even when using C++ */
53 #ifdef __cplusplus
54 extern "C" {
55 #endif
56 
57 /* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL
58 */
59 #define SDL_NET_MAJOR_VERSION 2
60 #define SDL_NET_MINOR_VERSION 0
61 #define SDL_NET_PATCHLEVEL 0
62 
63 /* This macro can be used to fill a version structure with the compile-time
64  * version of the SDL_net library.
65  */
66 #define SDL_NET_VERSION(X) \
67 { \
68  (X)->major = SDL_NET_MAJOR_VERSION; \
69  (X)->minor = SDL_NET_MINOR_VERSION; \
70  (X)->patch = SDL_NET_PATCHLEVEL; \
71 }
72 
73 /* This function gets the version of the dynamically linked SDL_net library.
74  it should NOT be used to fill a version structure, instead you should
75  use the SDL_NET_VERSION() macro.
76  */
78 
79 /* Initialize/Cleanup the network API
80  SDL must be initialized before calls to functions in this library,
81  because this library uses utility functions from the SDL library.
82 */
83 extern DECLSPEC int SDLCALL SDLNet_Init(void);
84 extern DECLSPEC void SDLCALL SDLNet_Quit(void);
85 
86 /***********************************************************************/
87 /* IPv4 hostname resolution API */
88 /***********************************************************************/
89 
90 typedef struct {
91  Uint32 host; /* 32-bit IPv4 host address */
92  Uint16 port; /* 16-bit protocol port */
93 } IPaddress;
94 
95 /* Resolve a host name and port to an IP address in network form.
96  If the function succeeds, it will return 0.
97  If the host couldn't be resolved, the host portion of the returned
98  address will be INADDR_NONE, and the function will return -1.
99  If 'host' is NULL, the resolved host will be set to INADDR_ANY.
100  */
101 #ifndef INADDR_ANY
102 #define INADDR_ANY 0x00000000
103 #endif
104 #ifndef INADDR_NONE
105 #define INADDR_NONE 0xFFFFFFFF
106 #endif
107 #ifndef INADDR_LOOPBACK
108 #define INADDR_LOOPBACK 0x7f000001
109 #endif
110 #ifndef INADDR_BROADCAST
111 #define INADDR_BROADCAST 0xFFFFFFFF
112 #endif
113 extern DECLSPEC int SDLCALL SDLNet_ResolveHost(IPaddress *address, const char *host, Uint16 port);
114 
115 /* Resolve an ip address to a host name in canonical form.
116  If the ip couldn't be resolved, this function returns NULL,
117  otherwise a pointer to a static buffer containing the hostname
118  is returned. Note that this function is not thread-safe.
119 */
120 extern DECLSPEC const char * SDLCALL SDLNet_ResolveIP(const IPaddress *ip);
121 
122 /* Get the addresses of network interfaces on this system.
123  This returns the number of addresses saved in 'addresses'
124  */
125 extern DECLSPEC int SDLCALL SDLNet_GetLocalAddresses(IPaddress *addresses, int maxcount);
126 
127 /***********************************************************************/
128 /* TCP network API */
129 /***********************************************************************/
130 
131 typedef struct _TCPsocket *TCPsocket;
132 
133 /* Open a TCP network socket
134  If ip.host is INADDR_NONE or INADDR_ANY, this creates a local server
135  socket on the given port, otherwise a TCP connection to the remote
136  host and port is attempted. The address passed in should already be
137  swapped to network byte order (addresses returned from
138  SDLNet_ResolveHost() are already in the correct form).
139  The newly created socket is returned, or NULL if there was an error.
140 */
141 extern DECLSPEC TCPsocket SDLCALL SDLNet_TCP_Open(IPaddress *ip);
142 
143 /* Accept an incoming connection on the given server socket.
144  The newly created socket is returned, or NULL if there was an error.
145 */
146 extern DECLSPEC TCPsocket SDLCALL SDLNet_TCP_Accept(TCPsocket server);
147 
148 /* Get the IP address of the remote system associated with the socket.
149  If the socket is a server socket, this function returns NULL.
150 */
152 
153 /* Send 'len' bytes of 'data' over the non-server socket 'sock'
154  This function returns the actual amount of data sent. If the return value
155  is less than the amount of data sent, then either the remote connection was
156  closed, or an unknown socket error occurred.
157 */
158 extern DECLSPEC int SDLCALL SDLNet_TCP_Send(TCPsocket sock, const void *data,
159  int len);
160 
161 /* Receive up to 'maxlen' bytes of data over the non-server socket 'sock',
162  and store them in the buffer pointed to by 'data'.
163  This function returns the actual amount of data received. If the return
164  value is less than or equal to zero, then either the remote connection was
165  closed, or an unknown socket error occurred.
166 */
167 extern DECLSPEC int SDLCALL SDLNet_TCP_Recv(TCPsocket sock, void *data, int maxlen);
168 
169 /* Close a TCP network socket */
170 extern DECLSPEC void SDLCALL SDLNet_TCP_Close(TCPsocket sock);
171 
172 
173 /***********************************************************************/
174 /* UDP network API */
175 /***********************************************************************/
176 
177 /* The maximum channels on a a UDP socket */
178 #define SDLNET_MAX_UDPCHANNELS 32
179 /* The maximum addresses bound to a single UDP socket channel */
180 #define SDLNET_MAX_UDPADDRESSES 4
181 
182 typedef struct _UDPsocket *UDPsocket;
183 typedef struct {
184  int channel; /* The src/dst channel of the packet */
185  Uint8 *data; /* The packet data */
186  int len; /* The length of the packet data */
187  int maxlen; /* The size of the data buffer */
188  int status; /* packet status after sending */
189  IPaddress address; /* The source/dest address of an incoming/outgoing packet */
190 } UDPpacket;
191 
192 /* Allocate/resize/free a single UDP packet 'size' bytes long.
193  The new packet is returned, or NULL if the function ran out of memory.
194  */
196 extern DECLSPEC int SDLCALL SDLNet_ResizePacket(UDPpacket *packet, int newsize);
197 extern DECLSPEC void SDLCALL SDLNet_FreePacket(UDPpacket *packet);
198 
199 /* Allocate/Free a UDP packet vector (array of packets) of 'howmany' packets,
200  each 'size' bytes long.
201  A pointer to the first packet in the array is returned, or NULL if the
202  function ran out of memory.
203  */
204 extern DECLSPEC UDPpacket ** SDLCALL SDLNet_AllocPacketV(int howmany, int size);
205 extern DECLSPEC void SDLCALL SDLNet_FreePacketV(UDPpacket **packetV);
206 
207 
208 /* Open a UDP network socket
209  If 'port' is non-zero, the UDP socket is bound to a local port.
210  The 'port' should be given in native byte order, but is used
211  internally in network (big endian) byte order, in addresses, etc.
212  This allows other systems to send to this socket via a known port.
213 */
214 extern DECLSPEC UDPsocket SDLCALL SDLNet_UDP_Open(Uint16 port);
215 
216 /* Set the percentage of simulated packet loss for packets sent on the socket.
217 */
218 extern DECLSPEC void SDLCALL SDLNet_UDP_SetPacketLoss(UDPsocket sock, int percent);
219 
220 /* Bind the address 'address' to the requested channel on the UDP socket.
221  If the channel is -1, then the first unbound channel that has not yet
222  been bound to the maximum number of addresses will be bound with
223  the given address as it's primary address.
224  If the channel is already bound, this new address will be added to the
225  list of valid source addresses for packets arriving on the channel.
226  If the channel is not already bound, then the address becomes the primary
227  address, to which all outbound packets on the channel are sent.
228  This function returns the channel which was bound, or -1 on error.
229 */
230 extern DECLSPEC int SDLCALL SDLNet_UDP_Bind(UDPsocket sock, int channel, const IPaddress *address);
231 
232 /* Unbind all addresses from the given channel */
233 extern DECLSPEC void SDLCALL SDLNet_UDP_Unbind(UDPsocket sock, int channel);
234 
235 /* Get the primary IP address of the remote system associated with the
236  socket and channel. If the channel is -1, then the primary IP port
237  of the UDP socket is returned -- this is only meaningful for sockets
238  opened with a specific port.
239  If the channel is not bound and not -1, this function returns NULL.
240  */
241 extern DECLSPEC IPaddress * SDLCALL SDLNet_UDP_GetPeerAddress(UDPsocket sock, int channel);
242 
243 /* Send a vector of packets to the the channels specified within the packet.
244  If the channel specified in the packet is -1, the packet will be sent to
245  the address in the 'src' member of the packet.
246  Each packet will be updated with the status of the packet after it has
247  been sent, -1 if the packet send failed.
248  This function returns the number of packets sent.
249 */
250 extern DECLSPEC int SDLCALL SDLNet_UDP_SendV(UDPsocket sock, UDPpacket **packets, int npackets);
251 
252 /* Send a single packet to the specified channel.
253  If the channel specified in the packet is -1, the packet will be sent to
254  the address in the 'src' member of the packet.
255  The packet will be updated with the status of the packet after it has
256  been sent.
257  This function returns 1 if the packet was sent, or 0 on error.
258 
259  NOTE:
260  The maximum size of the packet is limited by the MTU (Maximum Transfer Unit)
261  of the transport medium. It can be as low as 250 bytes for some PPP links,
262  and as high as 1500 bytes for ethernet.
263 */
264 extern DECLSPEC int SDLCALL SDLNet_UDP_Send(UDPsocket sock, int channel, UDPpacket *packet);
265 
266 /* Receive a vector of pending packets from the UDP socket.
267  The returned packets contain the source address and the channel they arrived
268  on. If they did not arrive on a bound channel, the the channel will be set
269  to -1.
270  The channels are checked in highest to lowest order, so if an address is
271  bound to multiple channels, the highest channel with the source address
272  bound will be returned.
273  This function returns the number of packets read from the network, or -1
274  on error. This function does not block, so can return 0 packets pending.
275 */
276 extern DECLSPEC int SDLCALL SDLNet_UDP_RecvV(UDPsocket sock, UDPpacket **packets);
277 
278 /* Receive a single packet from the UDP socket.
279  The returned packet contains the source address and the channel it arrived
280  on. If it did not arrive on a bound channel, the the channel will be set
281  to -1.
282  The channels are checked in highest to lowest order, so if an address is
283  bound to multiple channels, the highest channel with the source address
284  bound will be returned.
285  This function returns the number of packets read from the network, or -1
286  on error. This function does not block, so can return 0 packets pending.
287 */
288 extern DECLSPEC int SDLCALL SDLNet_UDP_Recv(UDPsocket sock, UDPpacket *packet);
289 
290 /* Close a UDP network socket */
291 extern DECLSPEC void SDLCALL SDLNet_UDP_Close(UDPsocket sock);
292 
293 
294 /***********************************************************************/
295 /* Hooks for checking sockets for available data */
296 /***********************************************************************/
297 
298 typedef struct _SDLNet_SocketSet *SDLNet_SocketSet;
299 
300 /* Any network socket can be safely cast to this socket type */
301 typedef struct _SDLNet_GenericSocket {
302  int ready;
304 
305 /* Allocate a socket set for use with SDLNet_CheckSockets()
306  This returns a socket set for up to 'maxsockets' sockets, or NULL if
307  the function ran out of memory.
308  */
309 extern DECLSPEC SDLNet_SocketSet SDLCALL SDLNet_AllocSocketSet(int maxsockets);
310 
311 /* Add a socket to a set of sockets to be checked for available data */
312 extern DECLSPEC int SDLCALL SDLNet_AddSocket(SDLNet_SocketSet set, SDLNet_GenericSocket sock);
313 static __inline__ int SDLNet_TCP_AddSocket(SDLNet_SocketSet set, TCPsocket sock)
314 {
315  return SDLNet_AddSocket(set, (SDLNet_GenericSocket)sock);
316 }
317 static __inline__ int SDLNet_UDP_AddSocket(SDLNet_SocketSet set, UDPsocket sock)
318 {
319  return SDLNet_AddSocket(set, (SDLNet_GenericSocket)sock);
320 }
321 
322 
323 /* Remove a socket from a set of sockets to be checked for available data */
324 extern DECLSPEC int SDLCALL SDLNet_DelSocket(SDLNet_SocketSet set, SDLNet_GenericSocket sock);
325 static __inline__ int SDLNet_TCP_DelSocket(SDLNet_SocketSet set, TCPsocket sock)
326 {
327  return SDLNet_DelSocket(set, (SDLNet_GenericSocket)sock);
328 }
329 static __inline__ int SDLNet_UDP_DelSocket(SDLNet_SocketSet set, UDPsocket sock)
330 {
331  return SDLNet_DelSocket(set, (SDLNet_GenericSocket)sock);
332 }
333 
334 /* This function checks to see if data is available for reading on the
335  given set of sockets. If 'timeout' is 0, it performs a quick poll,
336  otherwise the function returns when either data is available for
337  reading, or the timeout in milliseconds has elapsed, which ever occurs
338  first. This function returns the number of sockets ready for reading,
339  or -1 if there was an error with the select() system call.
340 */
341 extern DECLSPEC int SDLCALL SDLNet_CheckSockets(SDLNet_SocketSet set, Uint32 timeout);
342 
343 /* After calling SDLNet_CheckSockets(), you can use this function on a
344  socket that was in the socket set, to find out if data is available
345  for reading.
346 */
347 #define SDLNet_SocketReady(sock) _SDLNet_SocketReady((SDLNet_GenericSocket)(sock))
349 {
350  return (sock != NULL) && (sock->ready);
351 }
352 
353 /* Free a set of sockets allocated by SDL_NetAllocSocketSet() */
354 extern DECLSPEC void SDLCALL SDLNet_FreeSocketSet(SDLNet_SocketSet set);
355 
356 /***********************************************************************/
357 /* Error reporting functions */
358 /***********************************************************************/
359 
360 extern DECLSPEC void SDLCALL SDLNet_SetError(const char *fmt, ...);
361 extern DECLSPEC const char * SDLCALL SDLNet_GetError(void);
362 
363 /***********************************************************************/
364 /* Inline functions to read/write network data */
365 /***********************************************************************/
366 
367 /* Warning, some systems have data access alignment restrictions */
368 #if defined(sparc) || defined(mips) || defined(__arm__)
369 #define SDL_DATA_ALIGNED 1
370 #endif
371 #ifndef SDL_DATA_ALIGNED
372 #define SDL_DATA_ALIGNED 0
373 #endif
374 
375 /* Write a 16/32-bit value to network packet buffer */
376 #define SDLNet_Write16(value, areap) _SDLNet_Write16(value, areap)
377 #define SDLNet_Write32(value, areap) _SDLNet_Write32(value, areap)
378 
379 /* Read a 16/32-bit value from network packet buffer */
380 #define SDLNet_Read16(areap) _SDLNet_Read16(areap)
381 #define SDLNet_Read32(areap) _SDLNet_Read32(areap)
382 
383 #if !defined(WITHOUT_SDL) && !SDL_DATA_ALIGNED
384 
385 static __inline__ void _SDLNet_Write16(Uint16 value, void *areap)
386 {
387  *(Uint16 *)areap = SDL_SwapBE16(value);
388 }
389 
390 static __inline__ void _SDLNet_Write32(Uint32 value, void *areap)
391 {
392  *(Uint32 *)areap = SDL_SwapBE32(value);
393 }
394 
395 static __inline__ Uint16 _SDLNet_Read16(const void *areap)
396 {
397  return SDL_SwapBE16(*(const Uint16 *)areap);
398 }
399 
400 static __inline__ Uint32 _SDLNet_Read32(const void *areap)
401 {
402  return SDL_SwapBE32(*(const Uint32 *)areap);
403 }
404 
405 #else /* !defined(WITHOUT_SDL) && !SDL_DATA_ALIGNED */
406 
407 static __inline__ void _SDLNet_Write16(Uint16 value, void *areap)
408 {
409  Uint8 *area = (Uint8*)areap;
410  area[0] = (value >> 8) & 0xFF;
411  area[1] = value & 0xFF;
412 }
413 
414 static __inline__ void _SDLNet_Write32(Uint32 value, void *areap)
415 {
416  Uint8 *area = (Uint8*)areap;
417  area[0] = (value >> 24) & 0xFF;
418  area[1] = (value >> 16) & 0xFF;
419  area[2] = (value >> 8) & 0xFF;
420  area[3] = value & 0xFF;
421 }
422 
423 static __inline__ Uint16 _SDLNet_Read16(void *areap)
424 {
425  Uint8 *area = (Uint8*)areap;
426  return ((Uint16)area[0]) << 8 | ((Uint16)area[1]);
427 }
428 
429 static __inline__ Uint32 _SDLNet_Read32(const void *areap)
430 {
431  const Uint8 *area = (const Uint8*)areap;
432  return ((Uint32)area[0]) << 24 | ((Uint32)area[1]) << 16 | ((Uint32)area[2]) << 8 | ((Uint32)area[3]);
433 }
434 
435 #endif /* !defined(WITHOUT_SDL) && !SDL_DATA_ALIGNED */
436 
437 /* Ends C function definitions when using C++ */
438 #ifdef __cplusplus
439 }
440 #endif
441 #include "SDL/close_code.h"
442 
443 #endif /* _SDL_NET_H */
DECLSPEC int SDLCALL SDLNet_TCP_Send(TCPsocket sock, const void *data, int len)
Definition: SDLnetTCP.c:236
DECLSPEC void SDLCALL SDLNet_SetError(const char *fmt,...)
Definition: SDLnet.c:65
#define __inline__
Definition: begin_code.h:119
DECLSPEC int SDLCALL SDLNet_CheckSockets(SDLNet_SocketSet set, Uint32 timeout)
Definition: SDLnetselect.c:110
Uint32 host
Definition: SDL_net.h:91
static __inline__ Uint32 _SDLNet_Read32(const void *areap)
Definition: SDL_net.h:400
DECLSPEC int SDLCALL SDLNet_DelSocket(SDLNet_SocketSet set, SDLNet_GenericSocket sock)
Definition: SDLnetselect.c:81
struct _UDPsocket * UDPsocket
Definition: SDL_net.h:182
static __inline__ int SDLNet_UDP_DelSocket(SDLNet_SocketSet set, UDPsocket sock)
Definition: SDL_net.h:329
DECLSPEC UDPsocket SDLCALL SDLNet_UDP_Open(Uint16 port)
Definition: SDLnetUDP.c:139
#define NULL
Definition: ftobjs.h:61
unsigned short uint16_t
DECLSPEC void SDLCALL SDLNet_FreeSocketSet(SDLNet_SocketSet set)
Definition: SDLnetselect.c:156
DECLSPEC int SDLCALL SDLNet_Init(void)
Definition: SDLnet.c:86
static __inline__ Uint16 _SDLNet_Read16(const void *areap)
Definition: SDL_net.h:395
Uint8 major
Definition: SDL_version.h:53
#define DECLSPEC
Definition: begin_code.h:62
struct _SDLNet_GenericSocket * SDLNet_GenericSocket
static __inline__ void _SDLNet_Write32(Uint32 value, void *areap)
Definition: SDL_net.h:390
GLenum GLsizei len
Definition: glew.h:7035
#define SDLCALL
Definition: begin_code.h:72
DECLSPEC TCPsocket SDLCALL SDLNet_TCP_Accept(TCPsocket server)
Definition: SDLnetTCP.c:166
#define SDL_SwapBE32(X)
Definition: SDL_endian.h:216
DECLSPEC UDPpacket *SDLCALL SDLNet_AllocPacket(int size)
Definition: SDLnetUDP.c:51
#define SDL_SwapBE16(X)
Definition: SDL_endian.h:215
DECLSPEC int SDLCALL SDLNet_AddSocket(SDLNet_SocketSet set, SDLNet_GenericSocket sock)
Definition: SDLnetselect.c:68
int len
Definition: SDL_net.h:186
IPaddress address
Definition: SDL_net.h:189
DECLSPEC const SDLNet_version *SDLCALL SDLNet_Linked_Version(void)
Definition: SDLnet.c:33
DECLSPEC IPaddress *SDLCALL SDLNet_TCP_GetPeerAddress(TCPsocket sock)
Definition: SDLnetTCP.c:223
DECLSPEC void SDLCALL SDLNet_UDP_Unbind(UDPsocket sock, int channel)
Definition: SDLnetUDP.c:287
static UDPpacket ** packets
Definition: chat.cpp:46
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:145
static __inline__ int SDLNet_TCP_AddSocket(SDLNet_SocketSet set, TCPsocket sock)
Definition: SDL_net.h:313
static __inline__ int SDLNet_UDP_AddSocket(SDLNet_SocketSet set, UDPsocket sock)
Definition: SDL_net.h:317
int channel
Definition: SDL_net.h:184
struct _SDLNet_SocketSet * SDLNet_SocketSet
Definition: SDL_net.h:298
static __inline__ void _SDLNet_Write16(Uint16 value, void *areap)
Definition: SDL_net.h:385
Information the version of SDL in use.
Definition: SDL_version.h:51
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl2ext.h:848
DECLSPEC int SDLCALL SDLNet_UDP_SendV(UDPsocket sock, UDPpacket **packets, int npackets)
Definition: SDLnetUDP.c:326
DECLSPEC void SDLCALL SDLNet_FreePacketV(UDPpacket **packetV)
Definition: SDLnetUDP.c:121
DECLSPEC UDPpacket **SDLCALL SDLNet_AllocPacketV(int howmany, int size)
Definition: SDLnetUDP.c:98
GLuint GLuint64EXT address
Definition: glew.h:13266
static __inline__ int _SDLNet_SocketReady(SDLNet_GenericSocket sock)
Definition: SDL_net.h:348
Uint8 minor
Definition: SDL_version.h:54
DECLSPEC TCPsocket SDLCALL SDLNet_TCP_Open(IPaddress *ip)
Definition: SDLnetTCP.c:46
Uint16 port
Definition: SDL_net.h:92
DECLSPEC const char *SDLCALL SDLNet_ResolveIP(const IPaddress *ip)
Definition: SDLnet.c:173
DECLSPEC void SDLCALL SDLNet_Quit(void)
Definition: SDLnet.c:110
GLbitfield GLuint64 timeout
Definition: glew.h:5938
DECLSPEC int SDLCALL SDLNet_UDP_Send(UDPsocket sock, int channel, UDPpacket *packet)
Definition: SDLnetUDP.c:399
DECLSPEC int SDLCALL SDLNet_GetLocalAddresses(IPaddress *addresses, int maxcount)
Definition: SDLnet.c:187
DECLSPEC int SDLCALL SDLNet_ResolveHost(IPaddress *address, const char *host, Uint16 port)
Definition: SDLnet.c:138
unsigned char uint8_t
unsigned int uint32_t
DECLSPEC void SDLCALL SDLNet_UDP_SetPacketLoss(UDPsocket sock, int percent)
Definition: SDLnetUDP.c:220
DECLSPEC void SDLCALL SDLNet_FreePacket(UDPpacket *packet)
Definition: SDLnetUDP.c:85
SDL_version SDLNet_version
Definition: SDL_net.h:46
EGLSurface EGLint void ** value
Definition: eglext.h:301
struct _TCPsocket * TCPsocket
Definition: SDL_net.h:131
TCPsocket sock
Definition: chatd.c:41
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:129
static __inline__ int SDLNet_TCP_DelSocket(SDLNet_SocketSet set, TCPsocket sock)
Definition: SDL_net.h:325
int status
Definition: SDL_net.h:188
DECLSPEC void SDLCALL SDLNet_UDP_Close(UDPsocket sock)
Definition: SDLnetUDP.c:515
DECLSPEC int SDLCALL SDLNet_UDP_Bind(UDPsocket sock, int channel, const IPaddress *address)
Definition: SDLnetUDP.c:256
DECLSPEC IPaddress *SDLCALL SDLNet_UDP_GetPeerAddress(UDPsocket sock, int channel)
Definition: SDLnetUDP.c:298
DECLSPEC SDLNet_SocketSet SDLCALL SDLNet_AllocSocketSet(int maxsockets)
Definition: SDLnetselect.c:44
DECLSPEC int SDLCALL SDLNet_TCP_Recv(TCPsocket sock, void *data, int maxlen)
Definition: SDLnetTCP.c:269
uint16_t Uint16
An unsigned 16-bit integer type.
Definition: SDL_stdinc.h:137
int maxlen
Definition: SDL_net.h:187
Uint8 * data
Definition: SDL_net.h:185
DECLSPEC void SDLCALL SDLNet_TCP_Close(TCPsocket sock)
Definition: SDLnetTCP.c:289
DECLSPEC const char *SDLCALL SDLNet_GetError(void)
Definition: SDLnet.c:76
Uint8 patch
Definition: SDL_version.h:55
DECLSPEC int SDLCALL SDLNet_ResizePacket(UDPpacket *packet, int newsize)
Definition: SDLnetUDP.c:73
DECLSPEC int SDLCALL SDLNet_UDP_Recv(UDPsocket sock, UDPpacket *packet)
Definition: SDLnetUDP.c:504
DECLSPEC int SDLCALL SDLNet_UDP_RecvV(UDPsocket sock, UDPpacket **packets)
Definition: SDLnetUDP.c:439
GLsizei size
Definition: gl2ext.h:1467