Sign in to follow this  

Master server question (Winsock)

Recommended Posts

Anddos    588
If the master server handles all the ips that are listening for connections then if a listening 
server goes down it means you need to remove that server from the list,how would you achieve this 
if the ips are stored in a vector,how would you know which server just closed and that you need 
to remove it from the list?,so that when the clients do a refresh they dont see that server hosting any more.

Share this post

Link to post
Share on other sites
SimonForsman    7642

store the server ip and the last time you heard from it in the vector instead, have servers notify the master server every 30 seconds or so and then simply drop or ignore servers from the vector if they have been silent for more than a minute.


Personally i wouldn't use a vector for this though, a map is probably better.

Edited by SimonForsman

Share this post

Link to post
Share on other sites
hplus0603    11347

Is there a TCP connection between the listening server and the master server?

If so, you can remove the listening server when the connection is closed (return 0 or -1 from recv())


However, if the network connection is broken, or the machine is powered off or hard-crashes, the connection will "stay alive" for a long time before it's detected as closed.

You can fix this by sending periodic messages in both directions on the connection, or by turning on SO_KEEPALIVE (although SO_KEEPALIVE by default also uses a very long timeout.)


To map from an IP address (or socket file handle) to a connection object, use the appropriate data structure for doing value look-ups based on key. 99 times out of 100, that's a hash table. (In C++, an unordered_map)

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this