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

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


  From Andrew Gierth (andrew@erlenstar.demon.co.uk):

  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.

  Jari Kokko (jkokko@cc.hut.fi) has offered the following code to
  determine the client address:

  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);
  }



Home
FAQ