网络编程基础-socket加入多线程 短命女 2022-08-08 13:48 160阅读 0赞 ### Server端 ### public class MyServer { public static ArrayList<Socket> socketList = new ArrayList<Socket>(); public static void main(String[] args) throws IOException { ServerSocket ss = new ServerSocket(30000); while(true) { Socket s = ss.accept(); socketList.add(s); new Thread(new ServerThread(s)).start(); } } } public class ServerThread implements Runnable { Socket s = null; BufferedReader br = null; public ServerThread(Socket s) throws IOException { this.s = s; br = new BufferedReader(new InputStreamReader(s.getInputStream())); } @Override public void run() { String content = null; try { while ((content = readFromClient()) != null) { for (Socket s : MyServer.socketList) { PrintStream ps = new PrintStream(s.getOutputStream()); ps.println(content); } } } catch (IOException e) { e.printStackTrace(); } } private String readFromClient() { try { return br.readLine(); } catch (IOException e) { e.printStackTrace(); MyServer.socketList.remove(s); } return null; } } ### Client端 ### public class MyClient { public static void main(String[] args) throws UnknownHostException, IOException { Socket s = new Socket("127.0.0.1", 30000); new Thread(new ClientThread(s)).start(); PrintStream ps = new PrintStream(s.getOutputStream()); String line = null; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while((line = br.readLine()) != null) { ps.println(line); } } } public class ClientThread implements Runnable { private Socket s = null; public BufferedReader br = null; public ClientThread(Socket s) throws IOException { this.s = s; br = new BufferedReader(new InputStreamReader(s.getInputStream())); } @Override public void run() { String content = null; try { while((content = br.readLine()) != null) { System.out.println(content); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } > client 边读边写
还没有评论,来说两句吧...