社区
网络编程
帖子详情
多个进程/线程listen同一个端口(急)
dragonyes
2004-08-11 10:03:55
server端为了加快相应速度,起多个线程或进程监听同一个端口,可行吗?
客户端一个连接上来,应该哪一个线程/进程响应?
多个进程应该是可以的,但总觉得怪怪的
请各位大虾详细解释一下好吗?起多个线程或进程监听同一个端口到底好是不好?
应该注意哪些问题
谢谢
...全文
511
14
打赏
收藏
多个进程/线程listen同一个端口(急)
server端为了加快相应速度,起多个线程或进程监听同一个端口,可行吗? 客户端一个连接上来,应该哪一个线程/进程响应? 多个进程应该是可以的,但总觉得怪怪的 请各位大虾详细解释一下好吗?起多个线程或进程监听同一个端口到底好是不好? 应该注意哪些问题 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
NeoBean
2004-08-18
打赏
举报
回复
线程个数也不能启用多了,多了效率也会降下来的。况且Linux 7.2下一个进程最多开2048个线程,如果你的Client只有2048以下的用户可以考虑这种方式。
Listen用一个线程就够了,多了不一定是好事。如果Server对Client的请求需要做长时间的运算的话最好就用Thread Pool来实现,相反的话也就没有用Thread Pool的必要了。关于Thread Pool网上有很多的资料可以参考,Thread Pool是一种比较抽象的概念。
cxhz_cn
2004-08-18
打赏
举报
回复
也是差不多同样的问题~~~~~是listen起单独一个线程,还是accept单独启动一个线程,我看了很多书都是在accept才起一个线程的么
freeit
2004-08-13
打赏
举报
回复
线程池,可否讲得详细些,别唬我啊
xuyun11141
2004-08-12
打赏
举报
回复
listen使用单独的线程,之后的处理使用线程池/多线程
microyzy
2004-08-12
打赏
举报
回复
listen使用单独的线程,之后的处理使用线程池
allenq
2004-08-12
打赏
举报
回复
在一个机器上一个端口只能由一个进程(线程)侦听。
每连接上一个client,则由server端的socket经过accept时候产生一个socket句柄,并将之作为参数派生出一个线程
自由的风
2004-08-11
打赏
举报
回复
如果不是需要管理成百上千的socket的话,用完成端口意义不大
oyljerry
2004-08-11
打赏
举报
回复
楼上两位说的都对,专门用一个线程进行侦听,来了请求后,就启动一个线程进行处理,如果客户不是特别多的话,可以用一个线程数组来控制总的客户数目,如果客户特别多,就用完成端口吧(呵呵,这个我也只是听说,没有用过)
DentistryDoctor
2004-08-11
打赏
举报
回复
xdljf(hunter) 的说法也是。
DentistryDoctor
2004-08-11
打赏
举报
回复
监听最好只用一线程,不过每个客户却可以创建一线程。
xdljf
2004-08-11
打赏
举报
回复
如果client比较多的话,最好用完成端口
flyelf
2004-08-11
打赏
举报
回复
监听当然是用一个线程,关键是接收到客户端的连接请求之后,要启动处理线程来处理客户端的请求,而不是在监听线程中处理
encoder2004
2004-08-11
打赏
举报
回复
"完成端口"大侠能不能讲讲具体怎么回事
dragonyes
2004-08-11
打赏
举报
回复
当客户端连上来时,发送一个数据包就断开连接(短连接)
每连一次就开一个线程,岂不是影响效能
谢谢
如何
多个
进程
监听
同一个
端口
1. 问题描述 一个
进程
监听
端口
,经验告诉我们,如果多次启动一个
进程
会报错:“Address already in use!"。这是由于bind函数导致的,由于该
端口
号已经被第一个
进程
监听了。有哪些方法可以实现
多个
进程
监听
同一个
端口
呢? 2. 方案一:fork 只要在绑定
端口
号(bind函数)之后,监听
端口
号之前(
list
en
函数),用fork()函数生成子
进程
,这样子
进程
就可以克隆父
进程
,达到监听
同一个
端口
的目的,而且还相互竞争,提高程序效率。 这里要注意的是,计算机三次握手创建连接是不需要服务进
进程
、
线程
、
端口
、服务间关系
进程
是指在系统中正在运行的一个应用程序;
线程
是系统分配处理器时间资源的基本单元,或者说
进程
之内独立执行的一个单元。对于操 作系统而言,其调度单元是
线程
。一个
进程
至少包括一个
线程
,通常将该
线程
称为主
线程
。一个
进程
从主
线程
的执行开始进而创建一个或
多个
附加
线程
,就是所谓基于多
线程
的多任务。
端口
是计算机与外界通讯的出口,
端口
将接收到的数据包给到指定的应用程序来处理。
进程
或是
线程
可同时监听
多个
端口
。 服务:通常,服务是一个向应用程序和其他服务(本地和远程)提供一系列功能的实体。服务依赖于隐式声明的本地服务列表。在
单个
进程
监听
多个
端口
及
多个
进程
监听
同一个
端口
单个
进程
监听
多个
端口
单个
进程
创建
多个
socket 绑定不同的
端口
,TCP, UDP 都行
多个
进程
监听
同一个
端口
(multiple processes
list
en
on same port)方式1:通过 fork 创建子
进程
的方式可以实现,其他情况下不行。当连接到来时,子
进程
、父
进程
都可以 accept, 这就是著名的“惊群”问题(thundering herd problem)。NGINX 的...
多个
进程
能否监听
同一个
端口
号
我们都知道socket是网络上两个
进程
之间的双向通信链路, 即socket = 《A
进程
的IP地址:
端口
号,B
进程
的IP地址:
端口
号》 那么有个问题就很有意思了,不同的
进程
可以监听在
同一个
IP地址:
端口
号么?根据Unix网络编程中的知识可知,服务端监听一个
端口
会经历:1、根据套接字类型(Ipv4,Ipv6等)创建套接字socket2、将套接字bind绑定到具体的网络地址和
端口
号3、调用l...
网络编程(6)单
进程
多
线程
并发服务器实现
相比前面的fork方式的多
进程
服务器,用
线程
方式,更轻量级。最少用fork时,需要将内存映像,描述符等都要从父
进程
复制到子
进程
中,会占用大量的资源而 多
线程
方式都在一个
进程
内,就无需占用这些资源,但同步也是个问题,而且一个
线程
挂了,可能会影响到
进程
中的其它
线程
。 多
线程
并发的原理就是 当accept 成功连接一个客户端后,把与这个客户端的交互丢到新
线程
去处理它。 服务端代码:
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章