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

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

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

 1 package com.cjj.client;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.net.InetAddress;
 6 import java.net.URL;
 7 
 8 public class InetJavaTest {
 9     private static String remoteInetAddr = "59.231.36.59";//需要连接的IP地址
10      /**
11      * 传入需要连接的IP,返回是否连接成功
12      * @param remoteInetAddr
13      * @return
14      */
15     public static boolean isReachable(String remoteInetAddr) {
16         boolean reachable = false; 
17         try {   
18             InetAddress address = InetAddress.getByName(remoteInetAddr); 
19             reachable = address.isReachable(5000);  
20             } catch (Exception e) {  
21             e.printStackTrace();  
22             }  
23         return reachable;
24     }
25     
26     public static void main(String[] args) {
27         URL url = null;
28         Boolean bon = false;
29         try {
30         url = new URL("http://baicu.com/");
31         InputStream in = url.openStream();//打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream
32         System.out.println("连接正常");
33         in.close();//关闭此输入流并释放与该流关联的所有系统资源。
34         } catch (IOException e) {
35         System.out.println("无法连接到:" + url.toString());
36         }
37         bon = isReachable(remoteInetAddr);
38         System.out.println("pingIP:" + bon);
39     }
40 }

 

posted on 2013-12-02 19:48  月落舞絮  阅读(14656)  评论(2编辑  收藏  举报