1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
#ifndef POTD_SOCKET_H #define POTD_SOCKET_H 1 #include <netdb.h> #define POTD_BACKLOG 3 typedef struct psocket { int fd; socklen_t addr_len; struct sockaddr addr; int family; int socktype; int protocol; } psocket; int socket_nonblock(const psocket *psock); int socket_init_in(const char *addr, const char *port, struct addrinfo **results); int socket_bind_in(psocket *psock, struct addrinfo **results); int socket_listen_in(psocket *psock); int socket_accept_in(const psocket *psock, psocket *client_psock); int socket_connect_in(psocket *psock, struct addrinfo **results); int socket_connectaddr_in(psocket *psock, struct addrinfo **results, char host_buf[NI_MAXHOST], char service_buf[NI_MAXSERV]); int socket_addrtostr_in(const psocket *psock, char hbuf[NI_MAXHOST], char sbuf[NI_MAXSERV]); int socket_reconnect_in(psocket *psock); int socket_close(psocket *psock); void socket_clone(const psocket *src, psocket *dst); #endif