配对sockets

我有一个服务器程序(适用于所有三个主要的os系统),用c ++创build,它努力连接两个陌生人进行通信。 我目前的模式似乎贬值,我只是想知道是否有更好的方式去服务客户。

服务器收到连接请求
– 禁止的检查
这个sockets的开始线程


[线程简单地循环这些步骤]

确认与伙伴的连接(支票pipe理员)
– 如果经理级别的连接请求合作伙伴
– 接收我的套接字< – 客户端发送保持活动数据包每2秒左右
断开通知pipe理器,并closures线程。


[经理级这样工作]

-add套接字:我的sockPairs的vectorpush_back
– 请求伙伴:find没有连接的sockPair,如果没有,创build新的sockPair,一旦连接,标记sockPair删除,如果已经标记,删除它。
– 删除套接字:将标志添加到我断开连接的伙伴的pipe理员标识
检查套接字:检查pipe理器ID是否断开连接


我想地图会更有效率,但是我不积极,因为我从来没有和他们一起工作过,你还认为我应该改变什么? 我希望能够为这个模型服务200个客户,我真的不确定当前模型是否可以处理它…

每个连接的线程根本不会缩放。 您需要使用select(),poll(),epoll(),WSAAsyncSelect()或其他任何可以查询一组套接字事件的机制。 然后按顺序处理每个套接字,然后重复。