簡體   English   中英

用Java存儲IP的內容

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM