我設置了一個靜態IP並在我的筆記本上做了端口轉發,現在我有一個靜態IP地址,但它相對靜態,每當我重新啓動機器,我得到另一個地址,並且由於我有一個「靜態「IP我現在可以做PayPal IPN消息。但是我怎樣才能從我的Java程序中獲得這個靜態IP?我能想到的一種方式是訪問:http://portforward.com/,並在該頁面上告訴我我的外部IP是什麼,所以我可以使用Java代碼提取它,是否有任何其他方式可以在我的Java代碼中獲得此信息?端口轉發後,如何讓我的外部IP在Java?
0
A
回答
1
最好的解決辦法可能是dynamic DNS。本質上,您在計算機(或路由器)上運行程序,以便在IP更改時通知DNS服務器。然後,你可以告訴PayPal域名。
0
我看到這樣的三種方式:
- 當你發現,查詢什麼IP你顯然是從連接外部服務器。這很簡單,但您需要這樣的服務才能使用,並且通常情況下,沒有透明的代理會混淆您的結果。
- IGD是UPnP的一個子協議,如果你的端口轉發設備支持它,很容易給你結果(很多)。谷歌「IGD JAVA」用於圖書館和樣品。
- 註冊一個動態DNS服務,然後查找您自己的DNS名稱。
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());
}
}
這個片段將顯示所有接口,並綁定到這些綜合方案的。您需要查看列表以查找適當的接口(另請參閱NetworkInterface.getByName(String name))然後查看該接口的地址。一旦找到合適的InetAdress,就可以使用它來獲取字符串或字節表示。
+1
這將返回本地地址,而不是公共地址。 – 2010-07-12 05:36:07
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']?>
相關問題
- 1. Java端口轉發
- 2. 端口從Java內部轉發
- 3. 端口轉發攝像機ip c#
- 4. 通過端口轉發將udp服務器綁定到外部IP
- 5. 我如何獲得我的外部/ IP?
- 6. 如何問我在java中的外部IP地址
- 7. 端口轉發Devstack嘗試連接到本地IP而不是Swift中的端口轉發IP地址
- 8. 如何將HTTP URL請求轉發到IP地址+端口?
- 9. 如何從Java中Ping外部IP Android
- 10. Boot2Docker:無法讓端口轉發工作
- 11. 如何讓工頭端口可以從外部訪問mac
- 12. 如何發佈到外部IP?
- 13. 如何使用IP和端口直接與外部客戶端進行通信
- 14. 如何在VPS上做端口轉發?
- 15. 如何在Mac上端口轉發?
- 16. 如何在apache2 cookbook中轉發端口
- 17. 沒有端口轉發的Java P2P?
- 18. 端口轉發
- 19. 在Java中更改UDP數據包的發送IP和端口
- 20. 如何讓'mvn lagom:runAll'讓我的服務在端口上監聽?
- 21. 意外發送到我的端口
- 22. 讓Grails的外部IP地址聽
- 23. Netcat無法連接到外部IP的端口
- 24. 如何讓我的後端更新JSON
- 25. Java,遊戲和端口轉發
- 26. Java:將端口轉發到ServerSocket
- 27. Java套接字端口轉發
- 28. 如何在snmp4j中使用外部ip創建snmp客戶端?
- 29. 在Java中獲取'外部'IP地址
- 30. 獲取NAT轉換後的IP以及一些本地端口
如何「註冊動態DNS服務」?我需要打電話給我的ISP,安裝一個程序,它是免費的嗎? – Frank 2010-03-30 15:04:30
最簡單的方法是,您只需註冊一個動態DNS服務(例如http://www.dyndns.com/services/dns/dyndns/)並使用他們必須更新您的真實IP的任何機制。大多數(如果不是全部的話)服務提供了一個小工具,您可以運行它來自動更新您的動態DNS名稱。 DynDNS的服務最多可免費使用5個主機名稱。 – 2010-03-30 15:16:01
@Matt:謝謝,非常有幫助!我有點困惑,因此我甚至不需要建立一個靜態IP並進行端口轉發,只需轉到dyndns.com/services/dns/dyndns並註冊他們的服務並運行它們軟件,它會自動發送我的動態地址到我的註冊名稱?設置靜態IP並將其轉發給我自己的目的是什麼? – Frank 2010-03-30 16:00:05