package com.demo; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List; import javax.swing.JTextArea; public class ServiceSoketServerListenerThread extends Thread{ //监听端口 private int port; //是否开启 private ServerSocket serverSocket=null; //多线程下操作list public static List<User> socketList=new ArrayList<User>(); private JTextArea textField; public ServiceSoketServerListenerThread(int port,JTextArea textField) { this.port = port; this.textField=textField; } @Override public void run() { try { serverSocket = new ServerSocket(port); System.out.println("服务器开启"); while (true) { Socket socket = serverSocket.accept(); User user = new User(); user.setSocket(socket); //synchronized 同步 也可不加 synchronized (socketList) { socketList.add(user); } System.out.println("有客户连接"); new SocketData2(socket, textField).start(); } } catch (IOException e) { System.out.println("服务器关闭"); // e.printStackTrace(); } } // 转发消息 public static void send(String msg) { synchronized (socketList) { for (User user : socketList) { try { user.getSocket().getOutputStream().write((msg).getBytes()); } catch (IOException e1) { e1.printStackTrace(); } } } /* for (Socket socket : socketList) { try { socket.getOutputStream().write((msg).getBytes()); } catch (IOException e1) { e1.printStackTrace(); } try { DataOutputStream dis=new DataOutputStream(socket.getOutputStream()); dis.writeUTF("服务器:"+textField_2.getText()); } catch (IOException e1) { socketList.remove(socket); System.out.println("对方退出了!我从List里面去掉了!"); e1.printStackTrace(); } }*/ } public void stopService() { try { serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } public static List<User> getSocketlist() { return socketList; } }