gpt4 book ai didi

apache - 所有请求如何使用同一端口连接到 Web 服务器?

转载 作者:可可西里 更新时间:2023-11-01 02:45:00 25 4
gpt4 key购买 nike

Web 服务器如何使用同一端口 (80) 为 TCP 连接服务其客户端。对于 UDP 连接,我知道本身没有连接,所以我们可以让多个客户端将数据包发送到同一个端口。如果我尝试在我的本地主机上使用一个已经使用的端口,我会得到 BindException。

我看到的一个解决方案是为每个连接启动一个线程,但是对于像 google/yahoo 这样每个服务器中有 >100000 个连接的网站来说,这会不会很麻烦?

Web 服务器针对此问题采用了哪些解决方案?

最佳答案

服务器在众所周知的端口 (80) 上监听,并在收到请求后将请求委托(delegate)给工作套接字。这样它就可以服务于下一个请求。您可以编写自己的简单服务器来了解发生了什么。 Oracle 站点有一个很好的示例代码。 [1]

[1] http://java.sun.com/developer/technicalArticles/Networking/Webserver/WebServer.java

首先它创建一个服务器套接字;

ServerSocket ss = new ServerSocket(port);

然后它在指定的端口上监听并在接受请求后创建一个新的套接字;

Socket s = ss.accept();

如代码所示,它有一个工作线程池,因此在给定时刻您可以控制服务器在给定时间处理的请求数。其他人可能在队列中等待。

关于apache - 所有请求如何使用同一端口连接到 Web 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8540494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com