我正在尝试用 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/