【问题标题】:How to use data from Client Handler Threads in Java如何在 Java 中使用来自客户端处理程序线程的数据
【发布时间】:2017-04-19 14:18:58
【问题描述】:

我学习了一些教程并了解了如何将线程用于多线程套接字服务器。我为客户端创建了一个具有 ClientServiceThread 类的服务器类。当线程收到来自客户端的消息时,如何使用 Server 类访问该信息?

这是我的服务器线程:

public void run(){
        game = new Game();
        try{
            serverSocket = new ServerSocket(port);
            System.out.println("Server Started");
        }
        catch (IOException e){
            System.out.println(e);
        }

        while(true) {
            try {
                Socket clientSocket = serverSocket.accept();
                ClientServiceThread cliThread = new ClientServiceThread(clientSocket);
                threads.add(cliThread);
                cliThread.start();
            } catch(IOException e) {
                e.printStackTrace();

            }
        }


    }

这是我的 ClientServiceThread 类:

public void run() {
        boolean m_bRunThread = true;
        System.out.println("Accepted Client Address - " + socket.getInetAddress().getHostAddress());
        try {
            out = new ObjectOutputStream(socket.getOutputStream());
            in = new ObjectInputStream(socket.getInputStream());

            while(m_bRunThread) {
                String clientCommand = in.readUTF();
                System.out.println("Client Says :" + clientCommand);

                if(!gameStarted) {
                    out.writeUTF("GAME_ALREADY_STARTED");
                    out.flush();
                }
            }
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

编辑 1:本质上,我正在收听客户端处理程序线程上的命令/消息。稍后我想将它们处理到我的服务器中,以便我可以通过它操作我的游戏对象。

【问题讨论】:

  • 您能否更具体地说明您希望从 ClientServiceThread 传回服务器的内容?
  • 我想从客户端接收消息,然后为我创建的游戏对象处理它。

标签: java multithreading sockets


【解决方案1】:

我推荐的方法是将游戏对象传递给客户端线程(它必须是线程安全的!),然后让客户端线程直接对游戏对象执行操作。这将简化您的服务器类,并为您提供一个处理传入消息的地方。

【讨论】:

  • 如果我这样做,我如何能够将消息全局广播到所有客户端?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多