[問題] 伺服端是用幾個 Socket?

看板C_and_CPP (C/C++)作者 (耗呆肥羊)時間12年前 (2014/05/19 10:08), 12年前編輯推噓1(107)
留言8則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 各位大大早安 (∩_∩) 我有問題 目前我寫的伺服端只接收一個客戶端的連線,假如要改寫伺服端, 讓伺服端可以接收多個客戶端的連線,伺服端本身的 Socket 要用一個還是 隨著客戶端的數目而增加? accept(this->m_socket, (sockaddr*)&client.m_saddr, &addrlen); 就是 this->m_socket 要不要隨著客戶端的數目而增加? 還是只要用它一個來回傳 client.m_socket? 程式碼(Code):(請善用置底文網頁, 記得排版) 以下程式碼是伺服端只接收一個客戶端連線 客戶端:https://gist.github.com/johnhmj/c9df188c8b925152bd61 伺服端:https://gist.github.com/johnhmj/ec34f06bdaa92979c0cc 補充說明(Supplement): 無 -- 一隻小肥羊、兩隻小肥羊、三隻小肥羊、… 一百隻小肥羊、一百零一隻小肥羊、一百… ZZZzzz… -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.165.137 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1400465296.A.AF6.html

05/19 10:15, , 1F
大多數來講一個port listening即可 大不了backflag大點
05/19 10:15, 1F

05/19 20:07, , 2F
用multiple thread處理多個連線即可
05/19 20:07, 2F
(._.?) 喔... 我再去找資料再研究一下好惹 ※ 編輯: johnhmj (27.241.205.236), 05/20/2014 21:53:08

05/22 17:22, , 3F
給你個關鍵字比較好找 通用的話"select" 高效能取向
05/22 17:22, 3F

05/22 17:23, , 4F
的話 Windows查IOCP Linux查epoll Unix...er...別問
05/22 17:23, 4F

05/22 17:23, , 5F
不想分平台也不介意奇怪的語法的話 boost::asio
05/22 17:23, 5F

05/22 17:24, , 6F
select model理論上通吃 不過效能不太妙就是
05/22 17:24, 6F

05/22 17:25, , 7F
硬要自己開thread處理accepted socket不是不行 但是沒有
05/22 17:25, 7F

05/22 17:25, , 8F
人還在用那麼trivial的作法了
05/22 17:25, 8F
(∩_∩)-c█^█3-( ̄▽ ̄")y 感謝大大指教 ※ 編輯: johnhmj (42.66.169.106), 05/22/2014 22:24:49
文章代碼(AID): #1JUMUGhs (C_and_CPP)
文章代碼(AID): #1JUMUGhs (C_and_CPP)