inet_pton:
#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <errno.h> #include <string.h> /* Delete following line if your system's headers already DefinE this function prototype */ int inet_aton(const char *, struct in_addr *); /* include inet_pton */ int inet_pton(int family, const char *strptr, void *addrptr) { if (family == AF_INET) { struct in_addr in_val; if (inet_aton(strptr, &in_val)) { memcpy(addrptr, &in_val, sizeof(struct in_addr)); return (1); } return(0); } errno = EAFNOSUPPORT; return (-1); } /* end inet_pton */
inet_ntop:
#include <sys/types.h> #include <sys/socket.h> #include <errno.h> #include <stdio.h> #ifndef INET_ADDRSTRLEN #define INET_ADDRSTRLEN 16 #endif /* include inet_ntop */ const char * inet_ntop(int family, const void *addrptr, char *strptr, size_t len) { const u_char *p = (const u_char *) addrptr; if (family == AF_INET) { char temp[INET_ADDRSTRLEN]; snprintf(temp, sizeof(temp), "%d.%d.%d.%d", p[0], p[1], p[2], p[3]); if (strlen(temp) >= len) { errno = ENOSPC; return (NULL); } strcpy(strptr, temp); return (strptr); } errno = EAFNOSUPPORT; return (NULL); } /* end inet_ntop */