一、客戶端java
package com.ljb.app.socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; /** * 客戶端(模擬客戶登錄並接收服務端響應信息) * @author LJB * @version 2015年3月11日 */ public class LoginClient { /** * @param args */ public static void main(String[] args) { try { // 創建客戶端Socket鏈接,指定服務器的位置以及端口 Socket socket = new Socket("localhost",8800); // 獲得Socket的讀寫流 OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); // 獲取輸入流 InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); // 進行寫操做 String info = "用戶名:Tom,密碼:123456"; pw.write(info); pw.flush(); socket.shutdownOutput(); // 接收服務端響應 String reply = null; while (!((reply = br.readLine()) == null)) { System.out.println("我是客戶端,服務端響應是:" + reply); } // 關閉流 br.close(); is.close(); pw.close(); os.close(); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
二、服務端服務器
package com.ljb.app.socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; /** * 服務端(接收客戶端登錄信息並給出響應) * @author LJB * @version 2015年3月11日 */ public class LoginServer { /** * @param args */ public static void main(String[] args) { try { // 創建一個服務器綁定指定端口Socket(ServerSocket)並開始監聽 ServerSocket serverSocket = new ServerSocket(8800); // 使用accept()方法阻塞等待監聽,得到新的鏈接 Socket socket = serverSocket.accept(); // 得到輸入流 InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); // 得到輸出流 OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); // 讀取用戶輸入信息 String info = null; while (!((info = br.readLine()) == null)) { System.out.println("我是服務器,用戶信息爲:" + info); } // 響應信息 String reply = "welcome"; pw.write(reply); pw.flush(); // 關閉流 pw.close(); os.close(); br.close(); is.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } }
運行結果:app
客戶端:socket
我是客戶端,服務端響應是:welcomespa
服務端:.net
我是服務器,用戶信息爲:用戶名:Tom,密碼:123456code