在Java中存储IP的内容

时间:2014-05-31 04:19:23

标签: java mysql type-conversion

我正在将Java程序连接到MySQL数据库,所以我需要IP来连接它。硬编码IP显然是一个坏主意,所以我做了一个配置。我唯一的问题是我不知道在变量中存储IP的内容。我环顾了很多地方说int,但我不明白这是多么正确,因为整数没有小数。我该怎么办?

3 个答案:

答案 0 :(得分:4)

编辑:Mattias F的答案更适合您的情况。话虽这么说,我将解释为什么你听说IP地址可以存储在一个整数中。

IPv4地址由4个octect或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

答案 1 :(得分:2)

由于这是在配置文件中,我只是将其全部存储为字符串以便于阅读,但您可以将其存储为您想要的任何内容。如果这是你的IP:“xxx.xxx.xxx.xxx”,我会保存它,因为它在你的配置文件中。然后其余部分取决于您的框架连接到数据库所需的格式。如果它需要一个字符串,那么你就完成了,如果你需要一个int [],你只需要拆分“。”并对split的结果执行Integer.parseInt。它也可以将每个“xxx”与完全不同的东西分开,或者甚至将它们放在不同的行上,但是当你解析或者可读性较差时,这对你来说意味着更多的工作。

答案 2 :(得分:0)

将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");