Client繼承Thread是為了模擬多線程
Server code:
package com.test; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; public class SocketServer extends Thread { public static final int LISTEN_PORT = 8188; Socket socket = null; public SocketServer(Socket socket) { this.socket = socket; } public void run() { InputStream in = null; OutputStream out = null; try { in = socket.getInputStream(); out = socket.getOutputStream(); byte[] buffer = new byte[1024]; int len = in.read(buffer, 0, 1024); String inData = new String(buffer); System.out.println("request="+inData); String response="Server return:"+inData; System.out.println("response="+response); out.write(response.getBytes()); out.flush(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (in != null) { in.close(); } if (out != null) { out.close(); } if (socket != null) { socket.close(); } } catch (Exception closeErr) { System.out.println("close socket fail"); } } } public static void main(String[] args) { ServerSocket server = null; Socket socket = null; try { server = new ServerSocket(LISTEN_PORT, 0,InetAddress.getByName("127.0.0.1")); System.out.println("started: " + server); while (true) { // listen request socket = server.accept(); // new thread execution services SocketServer thread = new SocketServer(socket); thread.start(); } } catch (Exception e) { e.printStackTrace(); } } }Client code:
package com.test; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; public class SocketClient extends Thread { public static final int PORT = 8188; public void run() { int i = 1; InetAddress addr = null; Socket socket = null; OutputStream out = null; InputStream in = null; while (true) { try { socket = new Socket(); addr = InetAddress.getByName("127.0.0.1"); socket.connect(new InetSocketAddress(addr, PORT), 30000); out = socket.getOutputStream(); out.write(("client sent hello " + i).getBytes()); out.flush(); in = socket.getInputStream(); byte[] buffer = new byte[1024]; int len = in.read(buffer, 0, 1024); String inData = new String(buffer); System.out.println(inData); i++; } catch (Exception e) { e.printStackTrace(); } finally { try { if (in != null) { in.close(); } if (out != null) { out.close(); } if (socket != null) { socket.close(); } } catch (IOException e) { e.printStackTrace(); } } } } public static void main(String[] args) throws Exception { SocketClient SocketClient1 = new SocketClient(); SocketClient SocketClient2 = new SocketClient(); SocketClient1.start(); SocketClient2.start(); } }
沒有留言:
張貼留言