java判断IP和端口号是否可以访问

第一次发文章,原因就是项目想实现一个关于数据库能否连接需要进行提前判断,结果网上找了很多办法基本都是用的isReachable()进行的判断,不知道为什么这个方法一直返回False,所以只能自己写一个了。下面直接上代码,首先是关于ping IP和端口号的方法

public boolean isHostConnection(String ip, int port) {
          Socket socket = new Socket();
         try {
              socket.connect(new InetSocketAddress(ip, port),3000);
         } catch (SocketTimeoutException s) {
              return false;
        } catch (IOException e) {
             e.printStackTrace();
            return false;
       } finally {
             try {
                  socket.close();
             } catch (IOException e) {
                 e.printStackTrace();
             }
      }
      return true;
}

//下面是返回连接状态的

public List<HashMap<String,Object>> getConnectionState(){
           List<HashMap<String,Object>> listMap = new ArrayList<HashMap<String, Object>>();
           try {
                  List<FactoryDataBaseConfig> fdb = factoryDataBaseConfigService.getFactoryState();
                  List<String> list = new ArrayList<String>();
                  HashMap<String,Object> map = new HashMap<String,Object>();
                 for(int i = 0; i < fdb.size(); i++){
                       boolean result = false;
                       result = this.isHostConnectable(fdb.get(i).getIpHost(), 1433);
                       if(result){
                                  int factoryState = factoryDataBaseConfigService.updateStateTrue(fdb.get(i).getOrgfk());
                                  if(factoryState == 1){
                                                map.put("state", true);
                                  }else{
                                               map.put("state", false);
                                  }
                    }else{
                               int factoryState = factoryDataBaseConfigService.updateStateFalse(fdb.get(i).getOrgfk());
                                    if(factoryState == 1){
                                              map.put("state", true);
                                    }else{
                                              map.put("state", false);
                                    }
                              list.add(fdb.get(i).getOrgname());
                   }
                }
                   map.put("list", list);
                   listMap.add(map);
             } catch (Exception e) {
                       throw new RuntimeException(e.getMessage());
            }
            return listMap;
}

猜你喜欢

转载自www.cnblogs.com/0000cjw/p/11129115.html