關於socket編程的一些問題

服務器端程序

  import java.io.*;

  import java.net.*;

  import java.applet.Applet;

  public class TalkServer{

    public static void main(String args[]) {

      try{

        ServerSocket server=null;

        try{

          server=new ServerSocket(4700);

        //創建一個ServerSocket在端口4700監聽客戶請求

        }catch(Exception e) {

          System.out.println("can not listen to:"+e);

        //出錯,打印出錯信息

        }

        Socket socket=null;

        try{

          socket=server.accept();

          //使用accept()阻塞等待客戶請求,有客戶

          //請求到來則產生一個Socket對象,並繼續執行

        }catch(Exception e) {

          System.out.println("Error."+e);

          //出錯,打印出錯信息

        }

        String line;

        BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));

         //由Socket對象得到輸入流,並構造相應的BufferedReader對象

        PrintWriter os=newPrintWriter(socket.getOutputStream());

         //由Socket對象得到輸出流,並構造PrintWriter對象

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

         //由系統標準輸入設備構造BufferedReader對象

        System.out.println("Client:"+is.readLine());

        //在標準輸出上打印從客戶端讀入的字符串

        line=sin.readLine();

        //從標準輸入讀入一字符串

        while(!line.equals("bye")){

        //如果該字符串爲 "bye",則停止循環

          os.println(line);

          //向客戶端輸出該字符串

          os.flush();

          //刷新輸出流,使Client馬上收到該字符串

          System.out.println("Server:"+line);

          //在系統標準輸出上打印讀入的字符串

          System.out.println("Client:"+is.readLine());

          //從Client讀入一字符串,並打印到標準輸出上

          line=sin.readLine();

          //從系統標準輸入讀入一字符串

        }  //繼續循環

        os.close(); //關閉Socket輸出流

        is.close(); //關閉Socket輸入流

        socket.close(); //關閉Socket

        server.close(); //關閉ServerSocket

      }catch(Exception e){

        System.out.println("Error:"+e);

        //出錯,打印出錯信息

      }

    }

  }
59
        BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));

         //由系統標準輸入設備構造BufferedReader對象

目標:想要在控制檯輸出流

方法:構造一個BufferReader對象(BufferReader.readline()),

BufferedReader bufferedReader = new BufferedReader(Read in)

<pre name="code" class="java">System.out.println("Client:"+is.readLine());
在控制檯打印“Client”+每一行的字符,對sin進行了寫入(並且每行多加了Client,對數據的二次修改)


line=sin.readLine();//從緩存對象裏面讀出每一行(新的數據)
          System.out.println("Server:"+line);

          //在系統標準輸出上打印讀入的字符串


發佈了41 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章