配对插座

时间:2011-03-07 16:00:33

标签: c++ linux sockets vector

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

-server接收连接请求
- 禁止的检查 -starts此套接字的线程


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

- 与合作伙伴确认连接(检查经理)
- 来自经理类的未连接请求伙伴
- 在我的套接字上接收< - 客户端每隔2s左右发送保持活动的数据包 -on断开通知管理器,并关闭线程。


[经理类的工作原理]

-add socket:push_back在我的sockPairs向量上 -request partner:找到未连接的sockPair,如果不存在则创建新的sockPair,一旦连接,标记sockPair进行删除,如果已经标记,则删除它。
-remove socket:将标志添加到我已断开连接的伙伴的经理ID中 -check socket:检查管理员ID是否断开连接


我认为地图会更有效率,但我并不积极,因为我从未与他们合作过,你认为我还应该改变什么呢?我希望能够为这个模型的200个客户提供服务,我真的不确定当前的模型是否可以处理它......

1 个答案:

答案 0 :(得分:2)

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