How do I get my server to find out the clients address / host- name?
Answer Posted / 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 View All Answers
What is a sae socket?
What is the difference between SO_REUSEADDR and SO_REUSEPORT?
What is a socket api?
What are the pros/cons of select(), non-blocking I/O and SIGIO?
How is a socket created?
What is difference between socket and websocket?
What is the difference between read() and recv()?
Is there any advantage to handling the signal, rather than just ignoring it and checking for the EPIPE error? Are there any useful parameters passed to the signal catching function?
What is a socket address?
What's better 6pt or 12pt sockets?
What is af_inet in socket?
Can a socket have multiple ports?
How can I write a multi-homed server?
How can I set the timeout for the connect() system call?
What's the difference between a socket and a port?