网络编程(ServerSocket)

public class MyServer {
    
    

    public static void main(String[] args) {
        
        //创建服务器端
        try {
            ServerSocket server=new ServerSocket(9999);
            
            //创建集合对象存放连接的客户端
             final List<Socket> list=new ArrayList<Socket>();
            
             //循环接受客户端
             while(true)
             {
                final Socket client = server.accept();
                 //并将客户端添加到集合中,方便管理客户端
                 list.add(client);
                
                
                 //创建子线程来接受客户端的发送的消息,从而保证主线程的运行
                 new Thread(){
                     public void run() {
                        
                         //接受客户端的消息
                        
                        try {
                             BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream(), "gbk"));
                            
                             while(true)
                             {
                                
                                String data = br.readLine();
                                 //将读取的客户端的信息转发给其他客户端
                                 for(Socket cs:list)
                                 {
                                     if(cs != client)
                                     {
                                         //向其他客户端发送消息
                                         PrintWriter pw=new PrintWriter(cs.getOutputStream());
                                         pw.println(data);
                                         pw.flush();
                                     }
                                 }
                                
                             }
                        } catch (UnsupportedEncodingException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        } catch (IOException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        }
                        
                     };
                 }.start();
                
             }
            
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    }

}

原文地址:https://www.cnblogs.com/8023-itxinde/p/5129765.html