作者ankasc (初夏。)
看板Programming
标题Re: [问题] winsock listen 多个 port
时间Tue Oct 31 22:57:25 2006
※ 引述《lchbird (新手上路)》之铭言:
: 最近使用程式写简单的 socket 程式,
: 原本是开一个 socket ,只听一个 port。
: 这几天老板要求改成可听多个 port ,
: 虽然硬改出来了,但不知道是不是一个好的方法,上来请教大家。
: 原本听一个 port 时,每一个 connection 就会再生一个 thread 去处理。
: 因为是 console 下 blocking mode ,所以一个 port 时还好。
: 要多个 port 时,使用了一个 port 就给一个 thread 去听,
: 而每个 port 的每个 connection ,都会再生出一个 thread 去处理。
: 请问各位,有没有人有类似的经验?又,这类「听多个 port 」的程式大部份
: 都是怎麽处理的?
: 小弟试着去找 linux 下 sshd 的程式码来看,因为它在使用上也可以开启多个
: port ,有看到里面用到 pthread ,但不知道它是用在哪里部份的,也没有明确
: 的看到它如何处理开启多个 port 的部份。
: 谢谢!
你可以参考select()看看,
假设有一个port array,让负责listen的thread去polling这些port,
可以利用select()的return value来判断是否有人尝试连进来。
我没有这样写过,不过理论上应该可以这样达成,因为select()可以达成non-blocking。
当然有个更简单的方法,用你原来只能开一个port的程式,
开多个process就好了。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.187.12.127
1F:推 lchbird:感谢!目前没考虑使用多个 process 203.72.75.157 11/01 14:09
2F:推 lchbird:因为多个 port 收进来的资料会做整合 203.72.75.157 11/01 14:12
3F:→ lchbird:不太想透过 process 之间来处理资料 :p 203.72.75.157 11/01 14:12