• 多个客户端连接socket


    import java.io.DataInputStream;  
    import java.io.DataOutputStream;  
    import java.io.IOException;  
    import java.net.ServerSocket;  
    import java.net.Socket;  
      
    /** 
     * 服务器返回用户输入的信息, 为多个用户提供服务:为每个客户分配一个工作线程 
     */  
    public class ChatServers {  
        private int port = 8189;// 默认服务器端口  
      
        public ChatServers() {  
        }  
      
        // 创建指定端口的服务器  
        public ChatServers(int port) {  
            this.port = port;  
        }  
      
        public void service() {  
           
            try {  
                // 建立服务器连接,设定客户连接请求队列的长度  
                ServerSocket server = new ServerSocket(port,3);  
                while (true) {  
                    // 等待客户连接  
                    Socket socket = server.accept();  
                socket.setSoTimeout(15000);         
                    new Thread(new ServerThread(socket)).start();  
                }  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
      
        public static void main(String[] args) {  
            new ChatServers().service();  
        }  
    }  
      
    class ServerThread implements Runnable {  
        private Socket socket;  
      
        public ServerThread(Socket socket) {  
            this.socket = socket;  
        }  
      
        // 任务是为一个用户提供服务  
        @Override  
        public void run() {  
            try {  
                try {  
                    // 读取客户端传过来信息的DataInputStream  
                    DataInputStream in = new DataInputStream(socket  
                            .getInputStream());  
                    // 向客户端发送信息的DataOutputStream  
                    DataOutputStream out = new DataOutputStream(socket  
                            .getOutputStream());  
                    while (true) {  
                        // 读取来自客户端的信息  
                        String accpet = in.readUTF();  
                        out.writeUTF("服务器:" + accpet);  
                    }  
                } finally {// 建立连接失败的话不会执行socket.close();  
                    socket.close();  
                }  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
    }  
    

      

  • 相关阅读:
    6.Redis 哈希(Hash)的命令
    5.redis中String类型数据操作的命令
    4.redis中的key命令
    3.redis客户端连接服务器
    Bomblab
    leetcode multiply-strings
    datalab
    leetcode max-points-on-a-line
    os
    python 实现简单的端口扫描器
  • 原文地址:https://www.cnblogs.com/nicebaby/p/6323326.html
Copyright © 2020-2023  润新知