select, accept, select, recv... repeat
The title pretty much sums it up. At least if you've ever worked with sockets programming. If you haven't, you can consider yourself lucky! No, just kidding. Actually, sockets programming can be pretty entertaining, when it works as expected.
There are a few strange quirks that appear every now and then when developing server systems to handle multiple connections simultaneously, but you get used to them... eventually.
If the above text doesn't give you an indication as to what I'm currently working on, I'll try to put it in English instead. If you've read my previous journal, you'll know that our server is in fact split into multiple programs. This allows us to utilize the power of a (virtually) unlimited number of physical machines to run the game. Now, we wouldn't want the game clients (the program the players use to connect to the game) to connect to every kind of server for each shard. Not only would this be a potential security issue (as all machines would have to be directly exposed to the internet) but it would also complicates things by forcing the client to open several connections. Instead, we have decided to take the same course as many MMO developers before us: to use a "frontend" server to route messages between clients and internal machines.
Now, I have been told not to reveal too much about server internals... You understand that, right? I mean, we wouldn't want to provide a roadmap to crackers, would we? Of course not. But hey, what I just told you, anyone who knows a little about how today's MMO servers are generally designed would have figured out already.
And, well, I'm currently working on adding support for processing client messages on the frontend server. It really feels like this is coming together. Wish me luck, guys. May the source be with me. 
Comments: