Is it common for several sockets to be deleted at the same time?  If so this is O(Nn) where n is the number of sockets being deleted, and N is the number of registered sockets.  (Because of the cost of removing the elements).  If that is significant it should be changed to   move in place and then truncate which is O(N).

I suspect since N is normally O(400) this isn't a major problem, but if N gets closer to 10,000 - e.g., dafilesrv then it might become significant.  Moving to an array of allocated objects would help with large N since the copy size would be 8 bytes instead of 24.