天天看點

socket for echo

服務端:

public class EchoServer{

 public static void main(String args[]) throws Exception { // 所有異常抛出

  ServerSocket server = null ;  // 定義ServerSocket類

  Socket client = null ; // 表示客 戶端

  BufferedReader buf = null ; // 接收輸入流

  PrintStream out = null ;  // 列印流輸出最友善

  server = new ServerSocket(8888) ; // 伺服器在8888端口上監聽

  boolean f = true ; // 定義個标記位

  while(f){

   System.out.println("伺服器運作,等待用戶端連接配接。") ;

   client = server.accept() ;  // 得到連接配接,程式進入到阻塞狀态

   out = new PrintStream(client.getOutputStream()) ;

   // 準備接收用戶端的輸入資訊

   buf = new BufferedReader(new InputStreamReader(client.getInputStream())) ;

   boolean flag = true ; // 标志位,表示可以一直接收并回應資訊

   while(flag){

    String str = buf.readLine() ;  // 接收用戶端發送的内容

    if(str==null||"".equals(str)){ // 表示沒有内容

     flag = false ; // 退出循環

    }else{

     if("bye".equals(str)){ // 如果輸入的内容為bye表示結束

      flag = false ;

     }else{

      out.println("ECHO : " + str) ; // 回應資訊

     }

    }

   }

   client.close() ;

  }

  server.close() ;

 }

};

用戶端:

public class EchoClient{

 public static void main(String args[]) throws Exception { // 所有異常抛出

  Socket client = null ; // 表示客 戶端

  client = new Socket("localhost",8888) ;

  BufferedReader buf = null ; // 一次性接收完成

  PrintStream out = null ; // 發送資料

  BufferedReader input = null ; // 接收鍵盤資料

  input = new BufferedReader(new InputStreamReader(System.in)) ;

  buf = new BufferedReader(new InputStreamReader(client.getInputStream())) ;

  out = new PrintStream(client.getOutputStream()) ;

  boolean flag = true ;  // 定義标志位

  while(flag){

   System.out.print("輸入資訊:") ;

   String str = input.readLine() ; // 接收鍵盤的輸入資訊

   out.println(str) ;

   if("bye".equals(str)){

    flag = false ;

   }else{

    String echo = buf.readLine() ; // 接收傳回結果

    System.out.println(echo) ; // 輸出回應資訊

   }

  }

  buf.close() ;

  client.close() ;

 }

};