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