设置服务器分别为每个客户端监听从(服务器/客户端)到(服务器/客户端)的发送消息

问题描述 投票:1回答:0

试图写 - 分布式仿真框架,其中程序由具有移动对象的数组表示,服务器发送命令移动,客户端回答对象的数组

目标 - 服务器单独向每个连接的客户端发送文本消息 - 客户端答案

问题 - 找不到如何实现服务器监听和写入一个选定客户端的方法

请问有谁可以帮助我或者有所了解?

private ServerSocket serverSocket;

private ArrayList<BufferedReader> clientBufReaders;
private ArrayList<BufferedWriter> clientBufWriters;

public static void main(String[] args) {
    Server server = new Server();
}

public Server() {
    try {
        this.serverSocket = new ServerSocket(23456);
        this.clientBufReaders = new ArrayList<BufferedReader>();
        this.clientBufWriters = new ArrayList<BufferedWriter>();
        this.clients();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

private void clients() {

    Thread acceptThread = new Thread(new Runnable() {
        private Scanner in;

        public void run() {

            while (true) {
                try {
                    Socket clientSocket = serverSocket.accept();
                    clientBufReaders.add(new BufferedReader(new InputStreamReader(clientSocket.getInputStream())));

                    clientBufWriters.add(new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream())));

                    this.in = new Scanner(System.in);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    );
    acceptThread.start();

    while (true) {
        synchronized (clientBufReaders) {
            for (BufferedReader in : clientBufReaders) {
                try {
                    if (in.ready()) {
                        System.out.println(in.readLine());
                    } else {
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


    }

}
java server client communication bidirectional
© www.soinside.com 2019 - 2024. All rights reserved.