The client gets a string back from the ReadArgs() call which contains the hostname in either dotted-decimal notation or ASCII form. The clint needs to convert that string to a usable form. struct sockaddr_in serv; struct hostent *host; char *hostnam, *text, *button; /* ** First we need to try and resolve the host machine as an IP/Internet address. ** If that fails, fall back to seaching the hosts file for it. Later versions of ** gethostbyname() may use DNS to find a host name, rather than searching the hosts file. */ bzero( &serv, sizeof(struct sockaddr_in) ); if ( (serv.sin_addr.s_addr = inet_addr(hostnam)) == INADDR_NONE ) { /* ** Okay, the program wasnt handed a dotted decimal address, ** so we check and see if it was handed a machine name. */ if ( (host = gethostbyname(hostnam)) == NULL ) { printf("Host not found: %s\n",host); FinalExit( RETURN_ERROR ); } /* ** It does indeed have a name, so copy the addr field from the ** hostent structure into the sockaddr structure. */ bcopy( host->h_addr, (char *)&serv.sin_addr, host->h_length ); } After clearing out the serv sockadd_in structure, the client tries to convert the host name string (hostnam) it got from its command line from dotted-decimal to an IP address block using the inet_addr() function. If this fails, the server treats the string hostnam as an ASCII string containing a host name, and tries to get a normal IP address using gethostbyname(). This will search the hosts file (inet:db/hosts) for a matching entry. Future versions of gethostbyname() may use DNS (domain name system), which allows gethostbyname() to ask a server for host information rather than looking it up in a hosts file. If it is successful, gethostbyname() returns a pointer to a hostent structure. It requires a little work to to convert this hostent structure to a sockaddr_in (IP socket address) structure. There is a sockaddr structure embedded inside the hostent structure which can be used as a sockaddr string in this case. The call to bcopy() copies that embedded sockaddr structure into the client's sockaddr_in buffer.