java多執行緒(2)---基於ExecutorService的socket通訊執行緒池
阿新 • • 發佈:2019-01-24
package socketPool; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; import java.net.SocketTimeoutException; public class Client1 { public static void main(String[] args) throws IOException { //客戶端請求與本機在20006埠建立TCP連線 Socket client = new Socket( "127.0.0.1", 20006); client.setSoTimeout(10000); //獲取鍵盤輸入 BufferedReader input = new BufferedReader( new InputStreamReader(System.in )); //獲取Socket的輸出流,用來發送資料到服務端 PrintStream out = new PrintStream(client.getOutputStream()); //獲取Socket的輸入流,用來接收從服務端傳送過來的資料 BufferedReader buf = new BufferedReader( new InputStreamReader(client.getInputStream())); boolean flag = true; while(flag){ System. out.print( "客戶端,輸入資訊:" ); String str = input.readLine(); //傳送資料到服務端 out.println( str); if( "bye".equals( str)){ flag = false; } else{ try{ //從伺服器端接收資料有個時間限制(系統自設,也可以自己設定),超過了這個時間,便會丟擲該異常 String echo = buf.readLine(); System. out.println( echo); } catch(SocketTimeoutException e){ System. out.println( "Time out, No response"); } } } input.close(); if(client != null){ //如果建構函式建立起了連線,則關閉套接字,如果沒有建立起連線,自然不用關閉 client.close(); //只關閉socket,其關聯的輸入輸出流也會被關閉 } } }