import java.io.*;import java.net.ServerSocket;import java.net.Socket;/** * Create by wdful * Email: wdful165177@gmail.com * Date: 2017/4/7 *//* * 聊天程式 一個線程式控制制收 一個線程式控制制發 同時執行 *///發送端class Client implements Runnable { private Socket s; public Client(Socket s) { this.s = s; } @Override public void run() { while (true) { System.out.println(Thread.currentThread()+"用戶端發資訊:"); BufferedReader ins = new BufferedReader(new InputStreamReader(System.in)); String str = null; try { str = ins.readLine(); //為了發送資料 擷取Socket中的輸出資料流 OutputStream out = s.getOutputStream(); out.write(str.getBytes()); if ("886".equals(str)) { System.out.println(Thread.currentThread()+": bye"); s.close(); System.exit(0); } } catch (IOException e) { e.printStackTrace(); } //擷取資料 InputStream in = null; try { in = s.getInputStream(); byte[] data = new byte[1024]; int len = in.read(data); System.out.println(Thread.currentThread()+"服務端對用戶端說:"); System.out.println(new String(data, 0, len)); } catch (IOException e) { e.printStackTrace(); } } }}class ServerClient implements Runnable { private ServerSocket ss; private Socket s; public ServerClient(ServerSocket ss) { this.ss = ss; } @Override public void run() { System.out.println("Server start ..."); //建立服務端socket服務 並監聽一個連接埠 //擷取用戶端對象 try { s = ss.accept(); //串連狀態 System.out.println("Connected :" + s.getInetAddress().getHostAddress().toString() + " port:" + s.getPort()); } catch (IOException e) { e.printStackTrace(); System.out.println("擷取用戶端失敗。"); } while (true) { try { //讀取資料 InputStream in = s.getInputStream(); byte[] data = new byte[1024]; int len = in.read(data); String str = new String(data, 0, len); if ("886".equals(str)) { System.out.println(Thread.currentThread()+": bye"); ss.close(); s.close(); System.exit(0); } System.out.println(Thread.currentThread()+"用戶端對服務端說:"); System.out.println(str); System.out.println(Thread.currentThread()+"服務端發資訊:"); BufferedReader ins = new BufferedReader(new InputStreamReader(System.in)); //為了發送資料 擷取Socket中的輸出資料流 OutputStream out = s.getOutputStream(); out.write(ins.readLine().getBytes()); } catch (IOException e) { e.printStackTrace(); } } }}class ChatDemo { public static void main(String[] args) throws IOException { //服務端啟動 ServerClient serverClient = new ServerClient(new ServerSocket(10000)); Thread t2 = new Thread(serverClient); t2.start(); //用戶端啟動 Client client = new Client(new Socket("127.0.0.1",10000)); Thread t1 = new Thread(client); t1.start(); }}