/* test-udap hostname... Test the dk4socket_c8_udp_addresses_numeric() function from the dk4sock32 module. */ #include "dk4conf.h" #include #include "dk4sock.h" static void show_address(dk4_sockaddr_storage_t *addr) { struct sockaddr *sa; struct sockaddr_in *sa4; struct sockaddr_in6 *sa6; unsigned long ul; unsigned short us; size_t i; unsigned char uc; sa = (struct sockaddr *)addr; sa4 = (struct sockaddr_in *)addr; sa6 = (struct sockaddr_in6 *)addr; switch (sa->sa_family) { case AF_INET : { ul = ntohl(sa4->sin_addr.s_addr); us = ntohs(sa4->sin_port); printf( "IPv4 %lu.%lu.%lu.%lu %u\n", ((ul >> 24) & 0x000000FFUL), ((ul >> 16) & 0x000000FFUL), ((ul >> 8) & 0x000000FFUL), ((ul ) & 0x000000FFUL), (unsigned)us ); } break; case AF_INET6 : { us = ntohs(sa6->sin6_port); printf("IPv6 "); for (i = 0; i < 16; i++) { uc = sa6->sin6_addr.s6_addr[i]; if ((0 < i) && (0 == (i % 2))) { printf(":"); } printf("%02X", uc); } printf(" %u\n", (unsigned short)us); } break; default: { printf("ERROR: Unknown address family!\n"); } break; } } int main(int argc, char *argv[]) { dk4_sockaddr_storage_t array[2]; int i; int res; for (i = 1; i < argc; i++) { printf("Test \"%s\"\n", argv[i]); res = dk4socket_c8_udp_addresses_numeric( array, argv[i], 9876, 9876, 0, NULL ); if (DK4_SOCKET_RESULT_SUCCESS == res) { show_address(array); show_address(&(array[1])); } else { printf("ERROR: Not found!\n"); } printf("\n"); } return 0; }