您的位置:首页 > 理论基础 > 计算机网络

java中判断网络是否连通

2013-12-02 19:48 260 查看
  前段时间在项目中做了一个发送短信的功能,直到项目上线后,才发现了自己菜鸟的本质——考虑问题的不周全。发送短信,在我们的系统中会自动生成短信内容并且构造好联系人、电话等一条字段,插入到另外一个地方的数据库,由他们连接运营商发送短信至用户。但使用中有一段时间,我这边的系统显示短信生成正常,而用户却没有收到短信,在百分百确定代码没有问题后,咨询了一个老鸟,才知道,发短信前是需要判断一下那边的IP是否能ping通的,如果ping不同,你这边的短信插不过去,系统就会一直等待,造成延迟。

  从老鸟那请教了一下,原来只需要加几行代码,就能完成这个工作,豁然开朗之际,把我的喜悦分享给大家。

  使用中发现,如果需要判断系统连接一个url是否正常,试用URL中的openStream()方法是非常便捷的。

package com.cjj.client;

import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.URL;

public class InetJavaTest {
private static String remoteInetAddr = "59.231.36.59";//需要连接的IP地址
/**
* 传入需要连接的IP,返回是否连接成功
* @param remoteInetAddr
* @return
*/
public static boolean isReachable(String remoteInetAddr) {
boolean reachable = false;
try {
InetAddress address = InetAddress.getByName(remoteInetAddr);
reachable = address.isReachable(5000);
} catch (Exception e) {
e.printStackTrace();
}
return reachable;
}

public static void main(String[] args) {
URL url = null;
Boolean bon = false;
try {
url = new URL("http://baicu.com/");
InputStream in = url.openStream();//打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream
System.out.println("连接正常");
in.close();//关闭此输入流并释放与该流关联的所有系统资源。
} catch (IOException e) {
System.out.println("无法连接到:" + url.toString());
}
bon = isReachable(remoteInetAddr);
System.out.println("pingIP:" + bon);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: