/* gcc getserv.c -lwsock32 -mno-cygwin */ #define __USE_W32_SOCKETS #include #include #if defined(__CYGWIN__) && !defined(__USE_W32_SOCKETS) #include #endif main(int argc, char * argv[] ) { struct servent * ptr; int i; #ifdef __USE_W32_SOCKETS WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { printf("Cannot initialize\n"); return; } #endif if (argc < 2) { printf("Need argument\n"); exit(1); } if (!isdigit(*argv[1])) ptr = getservbyname (argv[1], "tcp"); else ptr = getservbyport (ntohs (atoi (argv[1])), "tcp"); printf("ptr = %x\n", ptr); if (ptr) { printf("name %x %s\n", ptr->s_name, ptr->s_name? ptr->s_name : "NULL"); printf("aliases:\n"); for (i = 0; ptr->s_aliases[i]; i++) printf("%d, %x %s\n", i, ptr->s_aliases[i], ptr->s_aliases[i]); printf("port %d\n", (int) ntohs(ptr->s_port)); printf("Checking validy of ptr->s_proto %x\n", ptr->s_proto); if (!IsBadStringPtr (ptr->s_proto, 10)) printf("proto %s\n", ptr->s_proto); } exit (0); }