作者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
推 lchbird:感謝!目前沒考慮使用多個 process 203.72.75.157 11/01 14:09
推 lchbird:因為多個 port 收進來的資料會做整合 203.72.75.157 11/01 14:12
→ lchbird:不太想透過 process 之間來處理資料 :p 203.72.75.157 11/01 14:12