SocketAddressthat returns is actually a protocol dependent subclass . For internet protocols such as TCP in your case, you can pass it InetSocketAddress:
InetSocketAddress sockaddr = (InetSocketAddress)socketName.getRemoteSocketAddress();
Then you can use the methods InetSocketAddressto get the necessary information, for example:
InetAddress inaddr = sockaddr.getAddress();
Inet4Address Inet6Address ( , instanceof, ), , IPv4:
Inet4Address in4addr = (Inet4Address)inaddr;
byte[] ip4bytes = in4addr.getAddress();
String ip4string = in4addr.toString();
:
SocketAddress socketAddress = socketName.getRemoteSocketAddress();
if (socketAddress instanceof InetSocketAddress) {
InetAddress inetAddress = ((InetSocketAddress)socketAddress).getAddress();
if (inetAddress instanceof Inet4Address)
System.out.println("IPv4: " + inetAddress);
else if (inetAddress instanceof Inet6Address)
System.out.println("IPv6: " + inetAddress);
else
System.err.println("Not an IP address.");
} else {
System.err.println("Not an internet protocol socket.");
}