有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

基于Java的多线程客户端socket

在大多数Java客户机/服务器示例中,它们使用ServerSocket。accept()方法从客户端接收消息。此方法阻止线程。这看起来不错,因为服务器不会做无用的工作,可以立即响应。但在客户端,他们使用如下无限循环:

BufferedReader in = new BufferedReader (new InputStreamReader (socket.getInputStream ()));
while (true)
{
    String cominginText = "";
    try
    {
        cominginText = in.readLine ();
        System.out.println (cominginText);
    }
    catch (IOException e)
    {
        //error ("System: " + "Connection to server lost!");
        System.exit (1);
        break;
    }
}

这看起来很糟糕,因为在我看来,客户做的是无用的工作。 是否有某种方法可以在客户端接收消息,而不做无用的工作,并且立即像在服务器端一样(可能是应该使用侦听器吗?)

“你所说的无用工作是什么意思?——布拉吉31分钟前”

例如,按下“签入循环”按钮(我们应该使用listener)

while (!button.isPressed() ) { }是一种糟糕的方式


共 (1) 个答案

  1. # 1 楼答案

    in.readLine()块。直到字符串返回,循环才会继续