做了一个php的网站
想显示登陆者的ip地址和ip所在地
想法是这样的
在mysql里建个ip数据库表
把以下形式的.txt文件转换成ip地址是十进制的.sql文件
.txt文件格式如下:
0.0.0.0 0.255.255.255 IANA CZ88.NET
4.12.0.0 4.19.77.255 美国 CZ88.NET
4.19.78.0 4.19.78.255 美国 西南政法大学因为空格数目不等,不知道怎么写程序转换ip地址转换成十进制的方法如下:private static long ipToLong(String strIP)
//将127.0.0.1 形式的IP地址转换成10进制整数,这里没有进行任何错误处理
{
int j=0;
int i=0;
long [] ip=new long[4];
int position1=strIP.indexOf(".");
int position2=strIP.indexOf(".",position1+1);
int position3=strIP.indexOf(".",position2+1);
ip[0]=Long.parseLong(strIP.substring(0,position1));
ip[1]=Long.parseLong(strIP.substring(position1+1,position2));
ip[2]=Long.parseLong(strIP.substring(position2+1,position3));
ip[3]=Long.parseLong(strIP.substring(position3+1));
return (ip[0]<<24)+(ip[1]<<16)+(ip[2]<<8)+ip[3];
}
想请求各位大大,能编个java程序来实现,我只是java入门,编不好,只能看懂一点,
可以把那个.txt文件转换成十进制ip的.txt文件就可以了谢谢各位了!!
想显示登陆者的ip地址和ip所在地
想法是这样的
在mysql里建个ip数据库表
把以下形式的.txt文件转换成ip地址是十进制的.sql文件
.txt文件格式如下:
0.0.0.0 0.255.255.255 IANA CZ88.NET
4.12.0.0 4.19.77.255 美国 CZ88.NET
4.19.78.0 4.19.78.255 美国 西南政法大学因为空格数目不等,不知道怎么写程序转换ip地址转换成十进制的方法如下:private static long ipToLong(String strIP)
//将127.0.0.1 形式的IP地址转换成10进制整数,这里没有进行任何错误处理
{
int j=0;
int i=0;
long [] ip=new long[4];
int position1=strIP.indexOf(".");
int position2=strIP.indexOf(".",position1+1);
int position3=strIP.indexOf(".",position2+1);
ip[0]=Long.parseLong(strIP.substring(0,position1));
ip[1]=Long.parseLong(strIP.substring(position1+1,position2));
ip[2]=Long.parseLong(strIP.substring(position2+1,position3));
ip[3]=Long.parseLong(strIP.substring(position3+1));
return (ip[0]<<24)+(ip[1]<<16)+(ip[2]<<8)+ip[3];
}
想请求各位大大,能编个java程序来实现,我只是java入门,编不好,只能看懂一点,
可以把那个.txt文件转换成十进制ip的.txt文件就可以了谢谢各位了!!
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class IPTest {
public static void main(String[] args) {
File oldFile = new File("1.txt");
File newFile = new File("_1.txt");
IPUtil util = new IPUtil();
util.convertToFile(oldFile, newFile);
System.out.println("ok!");
}
}class IPData {
private String ip1;
private String ip2;
private String nation;
private String name;
private long longIp1;
private long longIp2;
public String getIp1() {
return ip1;
}
public void setIp1(String ip1) {
this.ip1 = ip1;
this.longIp1 = IPUtil.ipToLong(ip1);
}
public String getIp2() {
return ip2;
}
public void setIp2(String ip2) {
this.ip2 = ip2;
this.longIp2 = IPUtil.ipToLong(ip2);
}
public long getLongIp1() {
return longIp1;
}
public long getLongIp2() {
return longIp2;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNation() {
return nation;
}
public void setNation(String nation) {
this.nation = nation;
}
public String toString() {
return String.format("%s(%d), %s(%d), %s, %s", ip1, longIp1, ip2, longIp2, nation, name);
}
public String toNumString() {
return String.format("%d,%d,%s,%s", longIp1, longIp2, nation, name);
}
}class IPUtil {
/**
* 将IP地址转为long数据
* @param strIP
* @return
*/
public static long ipToLong(String strIP) {
String[] ips = strIP.split("\\.");
long[] ip = new long[ips.length];
for (int i = 0; i < ips.length; i++) {
ip[i] = Long.parseLong(ips[i]);
}
return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3];
} /**
* 进行文件转换(将IP地址转为long数据)
* @param oldFile
* @param newFile
*/
public void convertToFile(File oldFile, File newFile) {
BufferedReader br = null;
BufferedWriter bw = null;
String line = System.getProperty("line.separator");
try {
br = new BufferedReader(new FileReader(oldFile));
bw = new BufferedWriter(new FileWriter(newFile));
String str = null;
while ((str = br.readLine()) != null) {
IPData ipdata = toIPData(str.trim());
bw.write(ipdata.toNumString() + line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} /**
* 分隔旧文件行串
* @param str
* @return
*/
private IPData toIPData(String str) {
String[] strs = str.split("\\s+");
IPData ipdata = new IPData();
ipdata.setIp1(strs[0]);
ipdata.setIp2(strs[1]);
ipdata.setNation(strs[2]);
ipdata.setName(strs[3]);
return ipdata;
}
}
at IPUtil.toIPData(IPTest.java:121)
at IPUtil.convertToFile(IPTest.java:94)
at IPTest.main(IPTest.java:13)
请问这个怎么改??
谢谢
id begin_ip end_ip area detail
1 0 16777215 IANA CZ88.NET
2 16777216 33554431 IANA CZ88.NET
3 33554432 50331647 IANA CZ88.NET 大概转换后的“_1.txt”文本格式如下:0, 16777215, IANA, CZ88.NET
16777216, 33554431, IANA, CZ88.NET
50331648, 67108863, 美国, 新泽西通用电气公司
67108864, 67829759, 美国, CZ88.NET
67829760, 67895295, 美国, 夏威夷
哪为大大能帮我改一下?谢谢