当前位置: 首页 > 知识库问答 >
问题:

在java多线程客户机-服务器架构中从run()方法调用方法

翟新
2023-03-14

我试图在run()方法中调用其他方法。但只有在退出/终止客户端连接时,这些方法才会显示输出。例如:当客户端发出listall命令时,应该打印listall方法。但它只有在客户端终止连接时才会被调用

谁能告诉我我做错了什么吗

运行()

        try {
            System.out.println("Client socket : "+ clientSocket);
            clientPortNumber=clientSocket.getPort();
            clients.add(clientSocket);
            String line;

            while(true) {

                line=is.readLine();
                //System.out.println(line);
                if(line==null)
                    break;
                String temp[]=line.split(" ");

                if(temp[0].equals("ADD")) {
                addRfc();//add method invocation
                }

                else if(temp[0].equals("LOOKUP"))
                send(os);//send method invocation

                else if(temp[0].equals("ListAll")) {
                    listAll(); /*listall method should print when cient gives listall command. But it gets invoked only when client terminates the connection*/
                } else if(line.equalsIgnoreCase("quit"))    {
                    break;
                }
            }
        }
        catch (IOException e) {
            System.out.println(e);
        }
    }

共有1个答案

段干茂实
2023-03-14

检查客户端的实现。这听起来像是客户端被缓冲了,你需要在服务器接收请求之前刷新请求。

 类似资料:
  • 我在做一个客户端/服务器应用程序。目前它的功能很好,但我需要添加一个“选项”。 server类如下所示: 因此许多客户端都能够连接到服务器。我的观点是:我希望一个连接的客户机(比如说,Client1)能够向他选择的另一个连接的客户机(Client2)发送一些东西。 我的问题是:Client1如何找到/拥有/检索Client2的套接字,因为所有的Client1都通过这个clientSocket在不同

  • 问题内容: 我在ServerConnectionManager中有以下代码: 我在其他一些使用ServerConnectionManager的线程的run方法中有一些代码:让我们将此线程称为B 问题是我无法从ServerConnectionManager的run方法中调用ReceivedPacket上的任何方法。但是,我能够从此ServerConnectionManager线程的构造函数中调用re

  • 问题内容: 假设我有一个和方法,我想从其他线程运行。是否可以仅使用一个extends类来执行此操作,而这些方法不在方法中? 我想到了这一点: 但是在这种情况下,方法完成后是否仍将是多线程的? 问题答案: 在方法 内部 进行工作;并调用您想调用的任何方法。 然而,和 只 被称为线程“内”。在投稿代码既和被 不 所述的上下文中执行的线程; 而是在当前线程的上下文中。 还可以向线程提供Runnable,

  • 我在Java开发了一个客户端-服务器游戏(称为“Set”)。 在调试过程中遇到了一个非常尴尬的问题: 如果在同一台机器上同时运行客户端和服务器(客户端连接到localhost),这个游戏工作得很棒(如果我运行服务器和大量客户端的话也是如此)。 但是,如果我在两台不同的机器上运行客户端和服务器,那么客户端和服务器都挂起了Inputstream readLine方法。 我会提到我正在使用writeBy

  • 我正在用java开发一个网络服务器,它将为它的客户端提供网络套接字通信。有人建议我在处理许多客户端时使用线程池,因为这比每个客户端使用一个线程要省时得多。 我的问题很简单,Javas ExecutorService、newFixedThreadPool是否能够处理可运行任务队列,并在其中调用线程阻塞方法? 换句话说,我想知道这个线程池是否是异步的? 我问这个问题的原因是,我已经尝试使用一个新的Fi