我设置了一个静态IP,并在我的笔记本上进行了端口转发,现在我有一个静态IP地址,但它相对静态,每次重新启动机器,我得到另一个地址,因为我有一个“静态”IP我现在可以做Paypal IPN消息传递。但是如何从我的Java程序中获取这个静态IP?我可以想到的一种方法是访问:http://portforward.com/并在该页面上告诉我我的外部IP是什么,所以我可以用Java代码提取它,我可以用我的Java代码做任何其他方式获取此信息?
答案 0 :(得分:1)
最佳解决方案可能是dynamic DNS。基本上,您在计算机(或路由器)上运行程序,以便在IP更改时通知DNS服务器。然后,您可以告诉PayPal域名。
答案 1 :(得分:1)
您可以使用脚本调用公共服务来检索外部IP地址。请记住,他们已经更改了一次链接位置。如果您控制自己的服务器,您应该编写自己的PHP脚本,只需将调用者的地址返回给脚本。
http://www.whatismyip.com/faq/automation.asp - 按照他们提供的开发人员链接
import java.net.*;
import java.io.*;
URL myExternalIP = new URL("PUT THE LINK HERE");
BufferedReader in = new BufferedReader(new InputStreamReader(
myExternalIP.openStream()));
String ip = in.readLine(); //you get the IP as a String
System.out.println(ip);
您自己的服务器脚本是一个简单的单行程序。创建一个名为whatismyip.php的文件,这是内容。
<? echo $_SERVER['REMOTE_ADDR']?>
答案 2 :(得分:0)
我看到三种方法:
答案 3 :(得分:0)
您可以使用NetworkInterface类:
Enumeration<NetworkInterface> ifcs = NetworkInterface.getNetworkInterfaces();
while(ifcs.hasMoreElements()){
NetworkInterface ifc = ifcs.nextElement();
System.out.println("Adresses of: "+ifc.getDisplayName());
Enumeration<InetAddress> adresses = ifc.getInetAddresses();
while(adresses.hasMoreElements()){
System.out.println(adresses.nextElement().getHostAddress());
}
}
此代码段将显示所有接口以及绑定到它们的IP。您需要查看列表以查找适当的接口(另请参阅NetworkInterface.getByName(String name))然后查看该接口的地址。一旦找到合适的InetAdress,就可以使用它来获取字符串或字节表示。