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 |
How are unix domain sockets implemented?
How can I read ICMP errors from connected UDP sockets?
Why do we need socket programming?
How many sockets can a port have?
How would I put my socket in non-blocking mode?
What is the difference between read() and recv()?
What's the difference between impact sockets and regular sockets?
What's better 6pt or 12pt sockets?
How come select says there is data, but read returns zero?
What is a socket connection?
What are socket exceptions? What is out-of-band data?
What is a socket set used for?