I have started an educational project to learn about networking. I built a small server using enet that receives UDP packets and replies to clients, next step is to actually have multiple connected clients. I dont plan to create my own WoW killer mmorpg, but I would like to learn the right way to do things. I was plannnig to use an std::map to eep the list of clients indexed by their ip address, but then I thought that it wouldnt be optimal when the server needs to find client neighbors to propagate changes (I think that kdtrees are the right data structure to optimize that). Then I thought that I should have an std::map indexed by IP and a kdtree with "visible" entities. And finally, I realized that using IPs mnaybe is not a wise way to index clients, because it would limit connections to one per IP. What is the correct approach to this problem?