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 |
over the socket? Is there a way to have a dynamic buffer? What does one do when one does not know how much information is coming?
How can I tell when a socket is closed on the other end?
What is difference between socket () and serversocket () class?
system choose one for me on the connect() call? Should I bind() a port number in my client program, or let the?
How do I properly close a socket?
What is a deep well socket?
How to find other end of unix socket connection?
What's better 6pt or 12pt sockets?
How come select says there is data, but read returns zero?
Whats the difference between select() and poll()?
What is the difference between SO_REUSEADDR and SO_REUSEPORT?
How does unix socket work?