【问题标题】:Java multithreaded server explanation pleaseJava多线程服务器解释请
【发布时间】:2015-06-16 22:19:30
【问题描述】:

我正在制作一个客户端服务器程序,我正在制作一个多线程服务器,以便它可以同时处理多个客户端。我看过一些例子,但有些东西让我对它们的工作方式感到困惑。 两个班: http://docs.oracle.com/javase/tutorial/networking/sockets/examples/KKMultiServer.java

http://docs.oracle.com/javase/tutorial/networking/sockets/examples/KKMultiServerThread.java

用于多线程服务器,但让我感到困惑的部分如下:

while (listening) {
            new KKMultiServerThread(serverSocket.accept()).start();
        }

在我看来,服务器正在创建无限数量的 KKMultiServerThreads,当套接字没有连接时,它只是通过 null。这是如何工作的?

【问题讨论】:

  • 如果您还没有这样做,请在询问此类问题之前开始阅读 Java API 文档。它通常相当详细地描述这类信息。例如ServerSocket.accept() 说:“侦听与此套接字建立的连接并接受它。该方法阻塞直到建立连接。”(强调我的)

标签: java multithreading sockets network-programming


【解决方案1】:

ServerSocket.accept() 阻塞,直到出现传入连接。它不会返回 null。

【讨论】:

    【解决方案2】:

    我还没有看到你的代码。但我对这个问题有一些想法。

        serverSocket.accept()
    

    是一种阻塞方式(函数)。如果你不输入东西,程序会等待你的输入。我认为它不会自动返回null。

    【讨论】:

    • 这更有意义,感谢您为我解决这个问题。
    猜你喜欢
    • 2019-05-27
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 2013-02-27
    • 1970-01-01
    相关资源
    最近更新 更多