Interview Questions

How do I convert a string into an internet address?

Unix Socket FAQ for Network programming


(Continued from previous question...)

How do I convert a string into an internet address?

If you are reading a host's address from the command line, you may not know if you have an aaa.bbb.ccc.ddd style address, or a host.domain.com style address. What I do with these, is first try to use it as a aaa.bbb.ccc.ddd type address, and if that fails, then do a name lookup on it. Here is an example:

 /* Converts ascii text to in_addr struct.
  /*   NULL is returned if the
 address can not be found. */
struct in_addr *atoaddr(char *address) {
         struct hostent *host;
         static struct in_addr saddr;

 /* First try it as aaa.bbb.ccc.ddd. */
         saddr.s_addr = inet_addr(address);
         if (saddr.s_addr != -1) {
           return &saddr;
         }
         host = gethostbyname(address);
         if (host != NULL) {
return (struct in_addr *) *host->h_addr_list;
         }
         return NULL;
       }

(Continued on next question...)

Other Interview Questions