Search code examples
ipipv6ipv4

what ip6 address is retrieved by server when a client connection is accepted


I am working on updating the code to accept client ip6 address.

My code generally opens a server socket and listens for incoming client connections, once a client is connected, will retrieve the ip address and connect back to the client on a diff port (for our different workflows).

Currently I retrieve the ip address of the connected client socket as follows:

Socket socket = m_serverSocket.accept(); String ipAddress = socket.getInetAddress().getHostAddress();

If I am using the same code as above for accepting ip6 client socket connections, then should I change my code to correctly retrieve the ip6 address.

I am asking this since ip6 address have multiple as follows: IPv6 Address. . . . . . . . . . . : ab34:342:34d:234:234b:df44:5c0:401d Temporary IPv6 Address. . . . . . : 3450:2e2:87c:984:edad:3452:7635:f654 Link-local IPv6 Address . . . . . : vf80::432b:f654:6f0:572e%11

When I am making a client connection from above system, I am getting the temporary ipv6 address as the ip address by the server socket.

Will it ever get a link-local ipv6 address on the server socket for the incoming client socket connection?

The reason I ask this is because I need to parse the correct ip6 address if the client socket gives link local ipv6 address.

Thanks for looking.


Solution

  • You will get the address used by the client that created the connection.

    In this case, the client was using a temporary IPv6 address.

    You can get a link local address if that was used by the client doing the connection, but a link local address cannot be used by connections from the wider internet, you would only get a link-local address when connections come in from the local network and those connections use the link-local address.