網絡通訊中基於套接字輸入流和輸出流的建立

基本方法

要實現套接字的網絡通訊,須要分四個步驟完成:網絡

  (1)建立套接字Socket,鏈接成功後造成網絡鏈接通道;socket

  (2)由套接字對象Socket調用getInputStream()或getOutputStream()方法,分別返回具備套接字通訊的基礎輸入流InputStream和輸出流OutputStream對象做爲參數,完成綁定套接字通訊的輸入流和輸出流對象的建立。函數

  (3)用輸入和輸出流對象調用其對應方法的操做方式實現網絡通訊;spa

  (4)網絡通訊結束,須要關閉輸入流和輸出流對象,尤爲要關閉套接字對象。code

具體實現方法

  (1)基於套接字的字節輸入流dis和輸出流dos的建立

     dis調用readUTF()方法接收數據;對象

       dos調用writeUTF()方法發送數據;blog

Socket socket=new Socket("127.0.0.1", 8888);
        try {
            DataInputStream dis=new DataInputStream(socket.getInputStream());
            DataOutputStream dos=new DataOutputStream(socket.getOutputStream());
                   ……
            dos.writeUTF("Cilent Test");
            dos.flush();
            dos.close();
        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            socket.close();
}                    

  (2)基於套接字具備緩衝的字節輸入流dinB和輸出流dosB的建立

DataInputStream dinB=new DataInputStream(new BufferedInputStream(socket.getInputStream()));
DataOutputStream dosB=new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));

  (3)基於套接字並具備緩衝的字符讀取器br和寫入器bw或文本輸出流pw的建立

      若是以字符爲單位的讀取器和寫入器來實現網絡通訊,必須將套接字的字節流用轉換器轉換爲字符流輸入,或將字符流裝換爲套接字的字節流輸出。get

      轉換器實現以下:it

new InputStreamReader(socket.getInputStream());    //字節輸入流轉換爲字符輸入流
new OutputStreamWriter(socket.getOutputStream());  //字符輸出流轉換爲字節輸出流

      如下將綁定有套接字的轉換器對象做爲緩衝字符讀取器br和字符寫入器bw的構造函數參數,創建br和bw對象,由此可達到字符操做的高效率。io

      創建br和bw對象代碼以下:

BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

      若是用字符格式化文本輸出流PrintWriter代替寫入器bw實現字符輸出流,其對象pw構造函數的第一個參數爲寫入對象便可;第二個參數爲true,表示數據寫到pw進入緩衝區,系統自動刷新輸出緩衝區,由此來確保數據送出。

PrintWriter writer=new PrintWriter(socket.getOutputStream(),true);
相關文章
相關標籤/搜索