我想將字符串轉換爲Inetaddress
。我不想解析主機名:字符串是ipv4地址。 InetAddress.getByName(String host)
工作嗎?或者我必須手動解析它?有沒有一種簡單的方法將字符串轉換爲Java中的Inetaddress?
回答
com.google.common.net.InetAddresses.forString(String ipString)
對此更好,因爲無論傳遞給它的字符串如何,它都不會執行DNS查找。
是的,這將工作。 The API對此非常清楚(「主機名稱可以是機器名稱,例如」java.sun.com「,也可以是其IP地址的文本表示。」),當然,您可以輕鬆檢查自己。
在通過String
到getByName()
之前,您可以嘗試using a regular expression to filter-out non-numeric IP addresses。那麼getByName()
將不會嘗試名稱解析。
當心:看來,解析一個無效的地址,如InetAddress.getByName("999.999.999.999"
)將不導致異常正如人們從文檔的這句期待:
地址格式的有效性進行檢查
經驗地說,我發現自己獲得了一個InetAddress實例,其中包含本地計算機的原始IP地址和無效的IP地址作爲主機名。當然,這不是我所期望的!
從Java 7開始,這將拋出UnknownHostException;還沒有檢查早期的Java,但我也期望有一個例外。 – 2015-03-12 12:38:40
The open-source IPAddress Java library將驗證IPv6和IPv4的所有標準表示,並且將在沒有DNS查找的情況下進行驗證。免責聲明:我是該圖書館的項目經理。
下面的代碼將做您要求什麼:
String s = "1.2.3.4";
try {
IPAddressString str = new IPAddressString(s);
IPAddress addr = str.toAddress();
InetAddress inetAddress = addr.toInetAddress(); //IPv4 or IPv6
if(addr.isIPv4() || addr.isIPv4Convertible()) {//IPv4 specific
IPv4Address ipv4Addr = addr.toIPv4();
Inet4Address inetAddr = ipv4Addr.toInetAddress();
//use address
}
} catch(AddressStringException e) {
//e.getMessage has validation error
}
- 1. 有沒有簡單的方法將值轉換爲字符串?
- 2. 有沒有一種簡單的方法將我的XML對象轉換回java中的字符串?
- 3. 有沒有一種簡單的方法來將我所有的字符串轉換爲對strings.xml的引用
- 4. 有沒有簡單的方法將這些字符串值轉換爲枚舉?
- 5. C#:有沒有簡單的方法將字符串轉換爲RTF?
- 6. 有沒有簡單的方法將C++枚舉轉換爲字符串?
- 7. 有沒有一種簡單的方法來將字符串轉換爲使用vbscript的數學表達式?
- 8. 有沒有一種簡單的方法在JavaScript中將文本轉換爲HTML?
- 9. 有沒有一種簡單的方法將枚舉類轉換爲字符串(C++)?
- 10. 有沒有一種更簡單的方法來獲得在java中的字符值轉換爲int?
- 11. 有沒有辦法將這種字符串轉換爲日期?
- 12. 將dbNull轉換爲VB.NET中的字符串的簡單方法
- 13. 有沒有簡單的方法將數字轉換爲PHP中的單詞?
- 14. 有沒有一種有效的方法將Bundle轉換爲ContentValues?
- 15. 簡單的方法將字符串轉換爲數字或null?
- 16. 有沒有簡單的方法將標準轉換爲HQL?
- 17. 有沒有簡單的方法將C#類轉換爲PHP?
- 18. 有沒有一種簡單的方法從C中的字符串數組創建一個字符串?
- 19. 有沒有辦法將decltype轉換爲宏中的字符串?
- 20. 在沒有DNS查詢的情況下將字符串轉換爲InetAddress
- 21. Java中有沒有簡單的方法將一個字符串前綴到多個其他字符串?
- 22. 將「字符串」轉換爲[[string]]的簡單方法?
- 23. 有一種簡單的方法來System.Data.DataTable轉換爲LINQ實體?
- 24. 有一種簡單的方法來轉換爲PDO
- 25. Java - 將字符串轉換爲雙倍字符串的最有效方法
- 26. 有沒有一種簡單的方法將「font」風格的屬性轉換爲它的每種風格?
- 27. 有沒有一種方法可以自動將文本字段上的NetBeans中的\符號轉換爲/ in java
- 28. 將一組字符串轉換爲簡單字符串C++
- 29. 有沒有一種簡單的方法將Java applet合併到ASP.NET頁面中?
- 30. 我正在使用toString()方法將映射轉換爲字符串。有沒有一種方法可以將字符串轉換回地圖?
這是[Guava]的一部分(http://docs.guava-libraries.googlecode.com/git-history/v10.0.1/javadoc/com/google/common/net/InetAddresses.html)。 – 2012-06-19 16:37:07
它應該是'com.google.common.net.InetAddresses.forString'(帶有大寫A的'InetAddresses')。因爲編輯必須至少有6個字符,所以我不會允許我在你的回答中糾正這個問題。 ;-) 無論如何,謝謝,正在尋找它,又一次番石榴拯救了這一天。 – silmeth 2016-10-20 14:10:57