How to determine IP used by client connecting to INADDR_ANY listener socket in C

Posted by codebox_rob on Stack Overflow See other posts from Stack Overflow or by codebox_rob
Published on 2010-06-15T17:57:28Z Indexed on 2010/06/15 18:02 UTC
Read the original article Hit count: 159

Filed under:
|
|
|

I have a network server application written in C, the listener is bound using INADDR_ANY so it can accept connections via any of the IP addresses of the host on which it is installed.

I need to determine which of the server's IP addresses the client used when establishing its connection - actually I just need to know whether they connected via the loopback address 127.0.0.1 or not.

Partial code sample as follows (I can post the whole thing if it helps):

static struct sockaddr_in serverAddress;
serverAddress.sin_family = AF_INET;
serverAddress.sin_addr.s_addr = INADDR_ANY;
serverAddress.sin_port = htons(port);

bind(listener, (struct sockaddr *) &serverAddress, sizeof(serverAddress));

listen(listener, CONNECTION_BACKLOG);

SOCKET socketfd;
static struct sockaddr_in clientAddress;
...
socketfd = accept(listener, (struct sockaddr *) &clientAddress, &length);

© Stack Overflow or respective owner

Related posts about c

    Related posts about sockets