#ifndef EASYSOCK_H_ #define EASYSOCK_H_ #include #include #include #include #include #include #include #include /* This function takes: a layer 3 - network layer - integer, which must be '4' for IPv4 and 6 for IPv6; and a layer 4 - transport layer - character, which must be 'T' for TCP or 'U' for UDP. It returns the created socket, or -1 if the socket creation failed.*/ int create_socket(int network, char transport); /* This function fills in the sockaddr struct 'dest' based on the given information. 'network' is an integer that contains '4' for IPv4 or '6' for IPv6; 'address' is the address that is filled into the struct; port is self-explanatory; and dest is a pointer to the sockaddr struct that will be filled in. The function exits with error code 202 if the network parameter contained neither '4' nor '6'. */ void create_addr(int network, char* address, int port,struct sockaddr* dest); /* This function utilizes the above two functions; it creates the socket and _binds_ the addresses. It is used for local sockets (server sockets). Parameters are same as above. It prints the error returned by 'bind' if something went wrong, and exits with errno.*/ int create_local (int network, char transport, char* address, int port,struct sockaddr* addr_struct); /* This function utilizes the same functions as 'create_local' but _connects_ to the requested address. It is used for remote sockets (client sockets). The paramters are same as above. This function needs an empty 'sockaddr *' structure passed to it, which it will fill. It prints the error returned by 'connect' if something went wrong, and exits with errno.*/ int create_remote (int network,char transport,char* address,int port,struct sockaddr* remote_addr_struct); /* check_ip_ver - This function checks if the given string is an IPv4 address (returns 4), IPv6 address (returns 6) or neither (returns -1). */ int check_ip_ver(char* address); /* int_to_inet - Takes an int value (4 for IPv4, 6 for IPv6) and returns AF_INET or AF_INET6 respectively. */ int int_to_inet(int network); /* char_to_socktype - Takes a character that represents a transport-layer protocol (currently only supports 'T' for TCP or 'U' for UDP - exits with error code 250 if the given characters is neither of these) and return the appropriate SOCKTYPE value. */ int char_to_socktype(char transport); /* inet_to_int - Takes an int value that corresponds to AF_INET or AF_INET6, and returns the appropriate int value. */ int inet_to_int(int af_type); #endif