java 客户端套接字_客户端套接字 - 获取IP -java

这个返回的SocketAddress实际上是一个protocol-dependent subclass。对于网络协议,如TCP在你的情况,你可以将其转换为InetSocketAddress:

InetSocketAddress sockaddr = (InetSocketAddress)socketName.getRemoteSocketAddress();

然后你可以使用的InetSocketAddress的方法来得到你需要的信息,例如:

InetAddress inaddr = sockaddr.getAddress();

然后,您可以根据地址类型将其转换为Inet4Address或Inet6Address(如果您不知道,请使用instanceof查找),例如如果你知道它是IPv4的:

Inet4Address in4addr = (Inet4Address)inaddr;

byte[] ip4bytes = in4addr.getAddress(); // returns byte[4]

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.");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值