开发者

Pairing sockets

I have a server program (works on all three major os systems), created in c++ which strives to connect two strangers for communication. My current model seems depreciated, and I am simply wondering if there is a better way to go about serving the clients.

-serve开发者_如何学Gor receives connection request

-checks for ban

-starts thread for this socket


[the thread simply loops through these steps]

-confirm connection with partner (check manager)

-if unconnected request partner from manager class

-receive on my socket <- client sends keep alive packets every 2s or so

-on disconnect inform manager, and close thread.


[the manager class works like this]

-add socket: push_back on my vector of sockPairs

-request partner: find unconnected sockPair, if none exist create new sockPair, once connected, mark sockPair for removal, if already marked, remove it.

-remove socket: add flag to manager id of partner that I've disconnected

-check socket: check manager id for disconnection


I'm thinking a map would be much more efficient, however I'm not positive, as I've never worked with them, what else do you think I should change? I'm hoping to be able to serve 200 clients with this model, I'm really unsure if the current model could handle it...


A thread per connection simply does not scale. You need to use a mechanism such as select(), poll(), epoll(), WSAAsyncSelect() or anything else that will let you query a set of sockets for events. Then you process each socket in order, and repeat.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜