要實現套接字的網絡通訊,須要分四個步驟完成:網絡
(1)建立套接字Socket,鏈接成功後造成網絡鏈接通道;socket
(2)由套接字對象Socket調用getInputStream()或getOutputStream()方法,分別返回具備套接字通訊的基礎輸入流InputStream和輸出流OutputStream對象做爲參數,完成綁定套接字通訊的輸入流和輸出流對象的建立。函數
(3)用輸入和輸出流對象調用其對應方法的操做方式實現網絡通訊;spa
(4)網絡通訊結束,須要關閉輸入流和輸出流對象,尤爲要關閉套接字對象。code
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(); }
DataInputStream dinB=new DataInputStream(new BufferedInputStream(socket.getInputStream())); DataOutputStream dosB=new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
若是以字符爲單位的讀取器和寫入器來實現網絡通訊,必須將套接字的字節流用轉換器轉換爲字符流輸入,或將字符流裝換爲套接字的字節流輸出。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);