服务器监听、并接收每个客户端的信息再群发到每个客户端
服务端
package com.java.xiong.Net17; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; public class RunableSocket implements Runnable { // 定义当前线程处理的Socket private Socket socket = null; // 该线程对用的输入流 private BufferedReader read = null; public RunableSocket(Socket s) throws IOException { this.socket = s; read = new BufferedReader( new InputStreamReader(socket.getInputStream())); } @Override public void run() { String line=null; try{ while((line=getClentData())!=null){ for(Socket s:MyServer.list){ //向每个客户端输出信息 PrintStream print=new PrintStream(s.getOutputStream()); print.println(line); } } }catch(IOException io){ io.printStackTrace(); } } //读取客户端数据的方法 public String getClentData(){ String line=null; try{ line=read.readLine(); }catch(IOException io){ MyServer.list.remove(socket); } return line; } }
package com.java.xiong.Net17; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List; public class MyServer { public static List<Socket> list=new ArrayList<Socket>(); public static void main(String [] args) throws Exception{ ServerSocket server=new ServerSocket(30001); while(true){ Socket scoket=server.accept(); list.add(scoket); new Thread(new RunableSocket(scoket)).start(); } } }
客户端
package com.java.xiong.Net17; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; //将服务器返回的数据打印出来 public class RubableClient implements Runnable { private Socket socket; private BufferedReader read; public RubableClient(Socket socket) throws IOException { this.socket = socket; this.read = new BufferedReader(new InputStreamReader( this.socket.getInputStream())); } @Override public void run() { try{ String line=null; while((line=read.readLine())!=null){ System.out.print(line); } }catch(IOException io){ io.printStackTrace(); } } }
package com.java.xiong.Net17; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; import java.net.UnknownHostException; public class MyClient { public static void main(String[] args) throws Exception, IOException { //向服务器发送请求 Socket socket = new Socket("127.0.0.1", 30001); new Thread(new RubableClient(socket)).start(); //获取输出流 PrintStream print = new PrintStream(socket.getOutputStream()); String line = ""; BufferedReader read = new BufferedReader(new InputStreamReader( System.in)); while((line=read.readLine())!=null){ //写入Socket对应的输出流 print.println(line); } } }