1 import java.io.BufferedReader;
2 import java.io.IOException;
3 import java.io.InputStreamReader;
4 import java.io.PrintWriter;
5 import java.net.ServerSocket;
6 import java.net.Socket;
7 import java.util.ArrayList;
8
9 import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array;
10
11 public class Myset {
12
13 public static void main(String[] args) {
14
15 // 定义一个集合
16 final ArrayList<Socket> ss = new ArrayList<Socket>();
17 try {
18 // 设置服务器的端口号
19 ServerSocket s = new ServerSocket(8888);
20
21 while (true) {
22 System.out.println("等待接收一个新用户的请求");
23 // 定义socket接收
24 final Socket socket = s.accept();
25 // 把接收到的放到结合中去
26 ss.add(socket);
27 // 开启线程
28 new Thread() {
29
30 public void run() {
31 try {
32 // 读取发送过来的东西
33 BufferedReader b = new BufferedReader(
34 new InputStreamReader(
35 socket.getInputStream(), "utf-8"));
36 // 利用循环多次接受
37 while (true) {
38 // 把读到的值付给data
39 String data = b.readLine();
40 // 新建一个socket 比对集合中你接收到的客户端
41 for (Socket sk : ss) {
42
43 // 这个判断是不给自己发
44 // if (sk != socket) {
45 // 创建输出流
46 PrintWriter pw = new PrintWriter(
47 sk.getOutputStream());
48
49 // 把date的值发送出去
50 pw.println(data + "123");
51 System.out.println(data + "123");
52 // 刷新
53 pw.flush();
54
55 // }
56 }
57 }
58
59 } catch (Exception e) {
60 // TODO Auto-generated catch block
61 e.printStackTrace();
62 }
63
64 };
65 }.start();
66 }
67
68 } catch (Exception e) {
69 // TODO Auto-generated catch block
70 e.printStackTrace();
71 }
72
73 }
74
75 }