确定将在JDK上使用给定主机名的网络接口

时间:2014-05-05 15:00:04

标签: java scala

我有一个简单的安全例程,它使用从客户端到服务器的IP地址和共享密钥串联的MD5哈希。 (客户端将此哈希值提供给服务器,服务器根据客户端的IP生成自己的哈希值并检查是否相等。)

客户端可能有多个网络接口;例如,在开发中,我们有一个公共IP地址,localhost和一个VPN网络地址,更不用说IPv6地址了。

当从客户端向主机发出请求时,客户端需要将请求接口的IP地址连接到共享密钥。我已经挂断了请求界面部分。除了使这个配置项目无论如何还要通过JDK确定哪个网络接口将用于解析和传输到特定主机? (我已经将主机名作为配置项,因此不是问题。)

1 个答案:

答案 0 :(得分:3)

这基本上是一个网络问题,而不是Java问题。即使您只有一个接口,也没有直接的方法来了解您自己的公共IP地址,更不用说几个接口了。您可以从诸如whatismyip.com之类的网站上删除您的地址,但无法保证您的操作系统选择到达该网站的路由将始终或通过与需要哈希地址的服务器路由相同的接口。