多个进程/线程listen同一个端口(急)

dragonyes 2004-08-11 10:03:55
server端为了加快相应速度,起多个线程或进程监听同一个端口,可行吗?
客户端一个连接上来,应该哪一个线程/进程响应?

多个进程应该是可以的,但总觉得怪怪的

请各位大虾详细解释一下好吗?起多个线程或进程监听同一个端口到底好是不好?
应该注意哪些问题

谢谢
...全文
511 14 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
当客户端连上来时,发送一个数据包就断开连接(短连接)

每连一次就开一个线程,岂不是影响效能

谢谢

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧