Still trudging along with this UDP stuff. In some ways it's good because I don't have to worry about blocking (and dealing with multithreading to avoid it), but at the same time, there is some ugliness with it. I send off a packet and hope for the best. Then maybe I get a packet back, but it's at a different time and in a different place in the code, and may not be in response to the packet I just sent. I've started assigning clients unique id's that are randomly generated on connection to help keep track of who, where, and how responses from the global login server are to be applied.