Interview Questions

How do I get my server to find out the client's address / host- name?

Unix Socket FAQ for Network programming


(Continued from previous question...)

How do I get my server to find out the client's address / host- name?

After accept()ing a connection, use getpeername() to get the address of the client. The client's address is of course, also returned on the accept(), but it is essential to initialise the address-length parameter before the accept call for this will work.

  int t;
  int len;
  struct sockaddr_in sin;
  struct hostent *host;

  len = sizeof sin;
  if (getpeername(t, (struct sockaddr *)
   &sin, &len) < 0)
          perror("getpeername");
  else {
 if ((host = gethostbyaddr((char *)
  &sin.sin_addr,sizeof sin.sin_addr,
  AF_INET)) == NULL)
              perror("gethostbyaddr");
  else printf("remote host is '%s'\n", 
  host->h_name);
  }

(Continued on next question...)

Other Interview Questions