#include <sys/types.h> #include <sys/socket.h> #include <unistd.h> int socket ( int domain, int type, int protocol ); int bind ( int sock, struct sockaddr *addr, int addrLen ); int listen ( int sock, int backlog ); int accept ( int sock, struct sockaddr *addr, int *addrLen ); int connect ( int sock, (struct sockaddr *)servaddr, int addrLen ); int send ( int sock, const void *msg, int len, unsigned int flags ); int recv ( int sock, void *buf, int len, unsigned int flags ); int sendto ( int sock, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen ); int recvfrom ( int sock, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen ); int getsockopt ( int sock, int level, int optname, void *optval, socklen_t *optlen ); int setsockopt ( int sock, int level, int optname, const void *optval, socklen_t optlen ); int close ( int sock ); struct sockaddr_in { int16_t sin_family; uint16_t sin_port; struct in_addr sin_addr; char sin_zero[8]; }; struct in_addr { uint32_t s_addr; }; #include <netdb.h> struct hostent * gethostbyname ( const char *name ); int getsockname ( int sock, struct sockaddr *name, _socklen_t *namelen ); int getpeername ( int sock, struct sockaddr *name, _socklen_t *namelen ); struct hostent { char *h_name; char **h_aliases; int h_addrtype; int h_length; char **h_addr_list; } #define h_addr h_addr_list[0]