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



How do I get my server to find out the clients address / host- name?..

Answer / chaitanya

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

}

Is This Answer Correct ?    0 Yes 0 No

Post New Answer

More Unix Socket Programming Interview Questions

When should I use UDP instead of TCP?

1 Answers  


Is tcp or unix socket faster?

0 Answers  


How do Sockets Work?

1 Answers  


What is the difference between SO_REUSEADDR and SO_REUSEPORT?

0 Answers  


How many sockets can a port have?

0 Answers  






After the chroot(), calls to socket() are failing. Why?

1 Answers  


Is a socket a file?

0 Answers  


of the socket? Does doing a connect() call affect the receive behaviour?

1 Answers  


What are the types of sockets?

0 Answers  


How come only the first part of my datagram is getting through?

1 Answers  


What is a socket connection?

0 Answers  


What are Sockets?

1 Answers  


Categories