#include #include uint32_t htonl(uint32_t n) { return ((n & 0xFF000000) >> 24) | ((n & 0x00FF0000) >> 8) | ((n & 0x0000FF00) << 8) | ((n & 0x000000FF) << 24); } uint16_t htons(uint16_t n) { return (n >> 8) | (n << 8); } uint32_t ntohl(uint32_t n) { return htonl(n); } uint16_t ntohs(uint16_t n) { return htons(n); } int inet_aton(const char *s, struct in_addr *dest) { if (!s) return -1; uint32_t ip = strtol(s, (char**)&s, 0); int parts = 1; for (; parts < 4; parts++) { if (!*s) break; if (*s++ != '.') return 0; ip <<= 8; ip += strtol(s, (char**)&s, 0); } if (parts > 1) ip = ((ip & 0xFFFFFF00) << 8 * (4 - parts)) | (ip & 0xFF); dest->s_addr = htonl(ip); return 1; }