多台主机同时访问服务器HTTP的80端口,服务器怎么处理端口?

kaiseer8828 2015-11-22 01:36:39
RT RT RT
当多台客户端同时访问某服务器HTTP的80端口,服务器怎么处理端口?
服务器端是压入队列排队呢,还是并发多多个进程交替处理,如果是并发那么各个进程还是都用的80端口吗,而且即使是并发用同一个端口建立多个连接这可能吗?
...全文
449 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ForestDB 2015-11-25
引用 8 楼 kaiseer8828 的回复:
[quote=引用 4 楼 ForestDB的回复:]去看基本的socket编程吧。 对于服务器,基本套路是这样的: server_socket = socket(); bind(server_socket); listen(server_socket); while (client_socet = accept(server_socket)) { new process/thread with client_socket }
假如我用浏览器同时打开两个百度页面,我这边也就是客户端的端口号用的是一个还是两个?[/quote] 为什么不抓包看看呢? 当然是两个。
回复
kaiseer8828 2015-11-23
引用 2 楼 piaopiao11的回复:
服务器的一个端口是允许很多个客户端连接的,要不然,服务器就没法做了。 一条tcp连接是由 服务器ip :端口+客户端ip:端口 这样组成的。 web服务器在处理客户端请求时候,一般都通过连接池和线程池控制。 客户端的请求先都丢给线程池处理,线程池处理不了的放到连接池中,连接池装不下了后直接报拒绝连接丢给客户端。
服务器一个端口与多个客户端相连是同时的吗?还是在一个时间点上最多只有一个客户端能与之相连,其他的都在等待?
回复
piaopiao11 2015-11-23
服务器的一个端口是允许很多个客户端连接的,要不然,服务器就没法做了。 一条tcp连接是由 服务器ip :端口+客户端ip:端口 这样组成的。 web服务器在处理客户端请求时候,一般都通过连接池和线程池控制。 客户端的请求先都丢给线程池处理,线程池处理不了的放到连接池中,连接池装不下了后直接报拒绝连接丢给客户端。
回复
赵4老师 2015-11-23
学会使用netstat -na命令观察当前所有连接。
回复
kaiseer8828 2015-11-23
引用 4 楼 ForestDB的回复:
去看基本的socket编程吧。 对于服务器,基本套路是这样的: server_socket = socket(); bind(server_socket); listen(server_socket); while (client_socet = accept(server_socket)) { new process/thread with client_socket }
假如我用浏览器同时打开两个百度页面,我这边也就是客户端的端口号用的是一个还是两个?
回复
kaiseer8828 2015-11-23
引用 5 楼 piaopiao11的回复:
连接可以同时建立,也可以同时处理,互相之间没有影响,当然影响性能的主要是cpu本身的处理能力,操作系统本身能承受的极限,还有网络带宽等等。当然这些都和你的程序无关了。
是不是只有多线程才能共用一个端口,多进程就不行?
回复
你要明白,servlet 是多线程
回复
piaopiao11 2015-11-23
连接可以同时建立,也可以同时处理,互相之间没有影响,当然影响性能的主要是cpu本身的处理能力,操作系统本身能承受的极限,还有网络带宽等等。当然这些都和你的程序无关了。
回复
ForestDB 2015-11-23
去看基本的socket编程吧。 对于服务器,基本套路是这样的: server_socket = socket(); bind(server_socket); listen(server_socket); while (client_socet = accept(server_socket)) { new process/thread with client_socket }
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-11-22 01:36
社区公告
暂无公告