java - Java中的多线程服务器程序

标签 java sockets network-programming

我正在尝试用 Java 编写一个多线程程序,其中服务器监听来自客户端的连接并生成一个线程以适应每个客户端。我有:

while(true)
    {
        Socket s = server.accept();    
        ClientHandler ch = new ClientHandler(s);
        Thread t = new Thread(ch);
        t.start();  
    }

我的问题是:每当它接受一个连接时

Socket s = server.accept();

并开始执行以下代码行以创建线程等,在此期间来自客户端的连接请求会发生什么。它是否以某种方式排队,并且会在 while(true) 的下一个循环中得到服务,还是会被拒绝?

谢谢, 尼克斯

最佳答案

accept() 返回后,TCP 握手完成并且您有一个已连接的客户端套接字(代码中的 s)。在下一次调用 accept() 之前,操作系统会将挂起的连接请求排队。

您可能想查看一些教程,例如 this one例如。

关于java - Java中的多线程服务器程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8346168/

相关文章:

sockets - Python 3 中的 Websocket 实现

java - 通过不稳定的网络同步本地数据库和远程应用程序

java - 如何修复 intelliJ 中的 NoClassDefFoundError : org. slf4j.LoggerFactory (但 eclipse 工作正常)

java - 为什么 session 超时后无法访问 servlet?

sockets - gethostbyname()(实际上,Boost Asio resolve())完全在2小时(120分钟,7200秒)后发生段故障

perl - 选择在关闭的 SCTP 套接字上返回 0

java - 寻找 Dagger 辅助注入(inject)的示例

Java程序未输出正确的整数值

c++ - 根据IP和掩码打印所有IP C++

qt4 - 使用 QUdpSocket 发送数据报