try{
URL MyURL=new URL("http://www.dheart.net/ip/index.php?ip="+ip);
BufferedReader dis=new BufferedReader(new InputStreamReader(MyURL.openStream()));
while (dis.ready()) {
String s = dis.readLine();
Pattern p=Pattern.compile("查 询 结 果<br><br>(.*?)<p align");
Matcher m = p.matcher(s);
while(m.find())
{ String ms=m.group(1).trim();
return ms;
}
}return "OK";
}
上面是程序的一段,问题就出在这个段里
在自己电脑WINDOWS上运行,结果:
*210.15.28.0/24
210.15.28.0<br>安徽省合肥市 网通
210.15.28.150<br>安徽省合肥市 网通
210.15.28.255<br>安徽省合肥市 网通
*210.15.62.0/24
........
在linux服务器上,结果:
*210.15.28.0/24
OK
OK
OK
OK
OK
OK
.........
是什么问题 ?
URL MyURL=new URL("http://www.dheart.net/ip/index.php?ip="+ip);
BufferedReader dis=new BufferedReader(new InputStreamReader(MyURL.openStream()));
while (dis.ready()) {
String s = dis.readLine();
Pattern p=Pattern.compile("查 询 结 果<br><br>(.*?)<p align");
Matcher m = p.matcher(s);
while(m.find())
{ String ms=m.group(1).trim();
return ms;
}
}return "OK";
}
上面是程序的一段,问题就出在这个段里
在自己电脑WINDOWS上运行,结果:
*210.15.28.0/24
210.15.28.0<br>安徽省合肥市 网通
210.15.28.150<br>安徽省合肥市 网通
210.15.28.255<br>安徽省合肥市 网通
*210.15.62.0/24
........
在linux服务器上,结果:
*210.15.28.0/24
OK
OK
OK
OK
OK
OK
.........
是什么问题 ?
楼主【cnhuai】截止到2008-06-23 18:23:29的历史汇总数据(不包括此帖):
发帖数:47 发帖分:958
结贴数:46 结贴分:938
未结数:1 未结分:20
结贴率:97.87 % 结分率:97.91 %
值得尊敬
URL MyURL=new URL("http://www.dheart.net/ip/index.php?ip="+ip);
BufferedReader dis=new BufferedReader(new InputStreamReader(MyURL.openStream()));
while (dis.ready()) {
String s = dis.readLine();
Pattern p=Pattern.compile("查 询 结 果 <br> <br>(.*?) <p align");
Matcher m = p.matcher(s);
while(m.find())
{ String ms=m.group(1).trim();
return ms; }
dis.close();
}return "OK";
} try it
dis.close(); 加这个是什么原因?
加了dis.close();在自己电脑上运行不对
结果是:
*210.15.28.0/24
210.15.28.0
IO Exception ocurred when get information.
210.15.28.150
IO Exception ocurred when get information.
IO Exception ocurred when get information.
*210.15.62.0/24
210.15.62.0
IO Exception ocurred when get information.
这里出现中文很不好,建议你注意一下文件自己的编码。你可以变成unicode看看,或者干错去掉这个标识。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ipjudge1 {
public static String ipregion(String ip)
{
try{
URL MyURL=new URL("http://www.dheart.net/ip/index.php?ip="+ip);
BufferedReader dis=new BufferedReader(new InputStreamReader(MyURL.openStream()));
while (dis.ready()) {
String s = dis.readLine();
Pattern p=Pattern.compile("查 询 结 果<br><br>(.*?)<p align");
Matcher m = p.matcher(s);
while(m.find())
{ String ms=m.group(1).trim();
return ms;
}
}return "OK";
}
catch(MalformedURLException e)
{
return "URL in wrong from,check it.";
}
catch(IOException e)
{
return("IO Exception ocurred when get information.");
}
}
public static void main(String args[])
{
File file=new File("region");
File[] tempFile=file.listFiles();//读取120文件
for(int i =0;i<tempFile.length;i++)
{
try{
String line;
String start;
String msk;
String end;
long length=150;
if(tempFile[i].isFile())
{
FileReader fr=new FileReader("region/"+tempFile[i].getName());
BufferedReader br=new BufferedReader(fr);
try{
while(br.ready()){
line=br.readLine();
Pattern p=Pattern.compile("(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})/([0-9][0-9])");
Matcher m = p.matcher(line);
while(m.find())
{ System.out.println("*"+m.group(1).trim()+"/"+m.group(2).trim());
fileReader.log("*"+m.group(1).trim()+"/"+m.group(2).trim(),"length-region/"+tempFile[i].getName());
start=m.group(1).trim();
msk=m.group(2).trim();
end=ipend.endip(start,msk);
long startl=ipend.ipToLong(start);
long endl=ipend.ipToLong(end);
for(long j=startl;j<endl;j=j+length)
{
String subip=ipend.longToIP(j);
System.out.println(subip);
System.out.println(ipregion(subip));
fileReader.log(ipregion(subip),"length-region/"+tempFile[i].getName());
}
System.out.println(ipregion(end));
}
}
}finally{
fr.close();
}
}
}catch(IOException e){
System.out.println();
}
}
}}
要这么用中文,你得保证你的LINUX核心环境是GBK,UNICODE才行
不是很理解你的意思
网页里面就显示的中文啊
并且我要的是IP地址的所属区域
也必须要显示的是中文
根据你的意思
最好的处理是不要用中文去判断我把Pattern p=Pattern.compile("查 询 结 果 <br> <br>(.*?) <p align");
改成Pattern p=Pattern.compile("<br> <br>(.*?) <p align"); 0K变成
*202.206.0.0/16
202.206.0.0<br>�ӱ���ѧ
202.206.0.150<br>�ӱ���ѧ
202.206.1.44<br>�ӱ���ѧ
202.206.1.194<br>�ӱ���ѧ
202.206.2.88<br>�ӱ���ѧ
202.206.2.238<br>�ӱ���ѧ
202.206.3.132<br>�ӱ���ѧ开始乱码了
*202.206.0.0/16
202.206.0.0<br>锟接憋拷锟斤拷学
202.206.0.150<br>锟接憋拷锟斤拷学
202.206.1.44<br>锟接憋拷锟斤拷学
202.206.1.194<br>锟接憋拷锟斤拷学
202.206.2.88<br>锟接憋拷锟斤拷学
202.206.2.238<br>锟接憋拷锟斤拷学
202.206.3.132<br>锟接憋拷锟斤拷学
在群里看到你问的,看看这个吧,这个在本机和linux上都能运行,有问题在群里问也行,呵呵,