[英]What to store an IP as in Java
我正在將Java程序連接到MySQL數據庫,因此需要IP才能連接它。 對IP進行硬編碼顯然不是一個好主意,因此我進行了配置。 我唯一的問題是我不確定在變量中存儲IP的內容。 我到處逛逛很多地方都說int,但是我看不出這怎么正確,因為整數沒有小數。 我該怎么辦?
編輯:Mattias F的答案更適合您的情況。 話雖如此,我將解釋為什么您聽說IP地址可以存儲為整數的原因。
IPv4地址由4個八位字節或4個字節的數據組成。 順便說一句,這正是32位整數可以容納的信息量。 這是兩種方法的結合:
public static int ipStringToInteger (final String ip)
{
int value = 0;
final String[] parts = ip.split ("\\.");
for (final String part : parts)
value = (value << 8) + Integer.parseInt (part);
return value;
}
public static String ipIntegerToString (int ip)
{
final String[] parts2 = new String[4];
for (int i = 0; i < 4; i++)
{
System.out.println ("Value : " + (ip & 0xff));
parts2[3 - i] = Integer.toString (ip & 0xff);
ip >>= 8;
}
return parts2[0] + '.' + parts2[1] + '.' + parts2[2] + '.' + parts2[3];
}
編輯:Integer.valueOf替換為Integer.parseInt,這要感謝Unihedron
由於這是在配置文件中,因此我將其全部存儲為字符串以提高可讀性,但您可以將其存儲為所需的任何內容。 如果這是您的IP:“ xxx.xxx.xxx.xxx”,我將其保存在您的配置文件中。 然后剩下的取決於您要用於連接到數據庫的框架的格式。 如果它需要一個字符串,那么就完成了;如果您需要一個int [],則只需拆分“”。 然后對分割結果執行Integer.parseInt。 也可以將每個“ xxx”以完全不同的方式分開,甚至將它們放在單獨的行上,但這都意味着解析時會為您增加工作量或降低可讀性。
將IP存儲在屬性文件中
Message.properties
#Mysql server Configuration
username = root
password = india
ip = 192.168.1.1
MySQLConnection.java
Properties pro = new Properties();
InputStream in = getClass().getResourceAsStream("Message.properties");
pro.load(in);
String userName = pro.getProperty("username");
String password = pro.getProperty("password");
String IP = pro.getProperty("ip");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.