1.

How Do I Get My Server To Find Out The Clients Address / Host- Name?

Answer»

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

}

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

}



Discussion

No Comment Found