I use a UDT array to store various info about the connections, one of those is the clients IP address. When a connection request comes in I check to see if the IP address is in the list and if so then I reconnect it to the same control it was connected to before.
When the connection is closed I clear the IP address from the list.

The only time you should ever get a connection request from the same client is if the connection was broken and the server doesn't know yet or if the client is running more than one instance of the program