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