开发者社区> 问答> 正文

用Java的套接字编程实现一个多线程的回显(echo)服务器。

用Java的套接字编程实现一个多线程的回显(echo)服务器。

展开
收起
游客pklijor6gytpx 2019-12-02 15:51:55 1104 0
1 条回答
写回答
取消 提交回答
  • import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class EchoServer {
    
        private static final int ECHO_SERVER_PORT = 6789;
    
        public static void main(String[] args) {        
            try(ServerSocket server = new ServerSocket(ECHO_SERVER_PORT)) {
                System.out.println("服务器已经启动...");
                while(true) {
                    Socket client = server.accept();
                    new Thread(new ClientHandler(client)).start();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        private static class ClientHandler implements Runnable {
            private Socket client;
    
            public ClientHandler(Socket client) {
                this.client = client;
            }
    
            @Override
            public void run() {
                try(BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
                        PrintWriter pw = new PrintWriter(client.getOutputStream())) {
                    String msg = br.readLine();
                    System.out.println("收到" + client.getInetAddress() + "发送的: " + msg);
                    pw.println(msg);
                    pw.flush();
                } catch(Exception ex) {
                    ex.printStackTrace();
                } finally {
                    try {
                        client.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    
    2019-12-02 15:52:16
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS计算与存储分离架构实践 立即下载