Mercurial > luasocket
comparison src/socket.h @ 0:4b915342e2a8
LuaSocket 2.0.2 + CMake build description.
author | Eric Wing <ewing . public |-at-| gmail . com> |
---|---|
date | Tue, 26 Aug 2008 18:40:01 -0700 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4b915342e2a8 |
---|---|
1 #ifndef SOCKET_H | |
2 #define SOCKET_H | |
3 /*=========================================================================*\ | |
4 * Socket compatibilization module | |
5 * LuaSocket toolkit | |
6 * | |
7 * BSD Sockets and WinSock are similar, but there are a few irritating | |
8 * differences. Also, not all *nix platforms behave the same. This module | |
9 * (and the associated usocket.h and wsocket.h) factor these differences and | |
10 * creates a interface compatible with the io.h module. | |
11 * | |
12 * RCS ID: $Id: socket.h,v 1.20 2005/11/20 07:20:23 diego Exp $ | |
13 \*=========================================================================*/ | |
14 #include "io.h" | |
15 | |
16 /*=========================================================================*\ | |
17 * Platform specific compatibilization | |
18 \*=========================================================================*/ | |
19 #ifdef _WIN32 | |
20 #include "wsocket.h" | |
21 #else | |
22 #include "usocket.h" | |
23 #endif | |
24 | |
25 /*=========================================================================*\ | |
26 * The connect and accept functions accept a timeout and their | |
27 * implementations are somewhat complicated. We chose to move | |
28 * the timeout control into this module for these functions in | |
29 * order to simplify the modules that use them. | |
30 \*=========================================================================*/ | |
31 #include "timeout.h" | |
32 | |
33 /* we are lazy... */ | |
34 typedef struct sockaddr SA; | |
35 | |
36 /*=========================================================================*\ | |
37 * Functions bellow implement a comfortable platform independent | |
38 * interface to sockets | |
39 \*=========================================================================*/ | |
40 int socket_open(void); | |
41 int socket_close(void); | |
42 void socket_destroy(p_socket ps); | |
43 void socket_shutdown(p_socket ps, int how); | |
44 int socket_sendto(p_socket ps, const char *data, size_t count, | |
45 size_t *sent, SA *addr, socklen_t addr_len, p_timeout tm); | |
46 int socket_recvfrom(p_socket ps, char *data, size_t count, | |
47 size_t *got, SA *addr, socklen_t *addr_len, p_timeout tm); | |
48 | |
49 void socket_setnonblocking(p_socket ps); | |
50 void socket_setblocking(p_socket ps); | |
51 | |
52 int socket_waitfd(p_socket ps, int sw, p_timeout tm); | |
53 int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds, | |
54 p_timeout tm); | |
55 | |
56 int socket_connect(p_socket ps, SA *addr, socklen_t addr_len, p_timeout tm); | |
57 int socket_create(p_socket ps, int domain, int type, int protocol); | |
58 int socket_bind(p_socket ps, SA *addr, socklen_t addr_len); | |
59 int socket_listen(p_socket ps, int backlog); | |
60 int socket_accept(p_socket ps, p_socket pa, SA *addr, | |
61 socklen_t *addr_len, p_timeout tm); | |
62 | |
63 const char *socket_hoststrerror(int err); | |
64 const char *socket_strerror(int err); | |
65 | |
66 /* these are perfect to use with the io abstraction module | |
67 and the buffered input module */ | |
68 int socket_send(p_socket ps, const char *data, size_t count, | |
69 size_t *sent, p_timeout tm); | |
70 int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm); | |
71 const char *socket_ioerror(p_socket ps, int err); | |
72 | |
73 int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp); | |
74 int socket_gethostbyname(const char *addr, struct hostent **hp); | |
75 | |
76 #endif /* SOCKET_H */ |