10#define _POSIX_C_SOURCE 200112L
22#if defined(__cplusplus)
35#include <netinet/in.h>
36#include <sys/socket.h>
56void socket_initialize(
void);
59void socket_cleanup(
void);
62Socket* socket_create(
int domain,
int type,
int protocol);
65int socket_close(Socket* sock);
69int socket_bind(Socket* sock,
const struct sockaddr* addr, socklen_t addrlen);
74int socket_listen(Socket* sock,
int backlog);
77Socket* socket_accept(Socket* sock,
struct sockaddr* addr, socklen_t* addrlen);
80int socket_connect(Socket* sock,
const struct sockaddr* addr, socklen_t addrlen);
83ssize_t socket_recv(Socket* sock,
void* buffer,
size_t size,
int flags);
86ssize_t socket_send(Socket* sock,
const void* buffer,
size_t size,
int flags);
89int socket_fd(Socket* sock);
94int socket_error(
void);
98void socket_strerror(
int err,
char* buffer,
size_t size);
101int socket_get_option(Socket* sock,
int level,
int optname,
void* optval, socklen_t* optlen);
104int socket_reuse_port(Socket* sock,
int enable);
107int socket_set_option(Socket* sock,
int level,
int optname,
const void* optval, socklen_t optlen);
110int socket_get_address(Socket* sock,
struct sockaddr* addr, socklen_t* addrlen);
113int socket_get_peer_address(Socket* sock,
struct sockaddr* addr, socklen_t* addrlen);
116int socket_family(Socket* sock);
119int socket_type(Socket* sock);
121#if defined(__cplusplus)