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.isHostConnection(fdb.get(i).getIpHost(), 1433);
                       if(result){
                                if(!fdb.get(i).getState().equals("1")){

                                      int factoryState = factoryDataBaseConfigService.updateStateTrue(fdb.get(i).getOrgfk());
                                      if(factoryState == 1){
                                               map.put("success", true);
                                       }else{
                                             map.put("success", false);
                                      }
                                }

                    }else{

                            list.add(fdb.get(i).getOrgname());

                            if(!fdb.get(i).getState().equals("0")){

                                    int factoryState = factoryDataBaseConfigService.updateStateFalse(fdb.get(i).getOrgfk());
                                   if(factoryState == 1){
                                          map.put("success", true);
                                   }else{
                                         map.put("success", false);
                                    }
                            }

                   }
                }
                   map.put("list", list);
                   listMap.add(map);
             } catch (Exception e) {
                       throw new RuntimeException(e.getMessage());
            }
            return listMap;
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM