當我們通過IP和端口連接設備時,有時候為了用戶體驗,我們急需在幾秒內給到用戶回復信息,而這些就需要一些方法來判斷:
public void connect(String server, int servPort) throws IOException,UnknownHostException, SocketTimeoutException { InetAddress ad = InetAddress.getByName(server); boolean state = ad.isReachable(1000);//測試是否可以達到該地址 ,判斷ip是否可以連接 1000是超時時間 if(state){ System.out.println("連接成功" + ad.getHostAddress()); } else{ System.out.println("連接失敗"); throw new IOException(); } //1.創建一個Socket實例:構造函數向指定的遠程主機和端口建立一個TCP連接 // socket = new Socket(server, servPort); socket = new Socket(); socket.setReceiveBufferSize(8192); socket.setSoTimeout(1000);// socket.setSoTimeout(2000); SocketAddress address = new InetSocketAddress(server, servPort); try { socket.connect(address,1000);//1.判斷ip、端口是否可連接 } catch (IOException e) { System.out.println("新建一個 socket server "+ servPort+"連接失敗"); throw new IOException(); } System.out.println("新建一個socket"); // System.out.println("Connected to server... sending echo string"); //2. 通過套接字的輸入輸出流進行通信:一個Socket連接實例包括一個InputStream和一個OutputStream,它們的用法同於其他Java輸入輸出流。 in = socket.getInputStream(); out = socket.getOutputStream(); isalreadyconnected=1; // connect1( server, servPort) ; }
通過上面兩個方法,拋出異常,中斷連接,來滿足用戶體驗
