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

作者: johnhmj (耗呆肥羊)   2014-05-19 10:07:51
開發平台(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):
作者: Killercat (殺人貓™)   2014-05-19 10:15:00
大多數來講一個port listening即可 大不了backflag大點
作者: pcjustin (駱駝)   2014-05-19 20:07:00
用multiple thread處理多個連線即可
作者: Killercat (殺人貓™)   2014-05-22 17:22:00
給你個關鍵字比較好找 通用的話"select" 高效能取向的話 Windows查IOCP Linux查epoll Unix...er...別問不想分平台也不介意奇怪的語法的話 boost::asioselect model理論上通吃 不過效能不太妙就是硬要自己開thread處理accepted socket不是不行 但是沒有人還在用那麼trivial的作法了

Links booklink

Contact Us: admin [ a t ] ucptt.com