[问题] 伺服端是用几个 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