Как обновлять TCP сервер с подключенными клиентами?
Как в nginx - запускается вторая копия процесса уже обновленного, которая принимает новые соединения, а старые дообрабатывает старый. Старый, конечно, должен при этом закрыть слушающий сокет.
Когда все соединения обработает, он сам завершается. Механизм сложный в реализации, но тут простого и не будет.
Еще где-то видел такой подход : слушающий процесс и обработчики реализованы в отдельных библиотеках как плагины. Плагины можно загружать и выгружать на лету. При таком механизме становится довольно удобно обновлять приложение - можно обновлять только плагин.
Представляется, что Вы должны сделать интерфейс-прослойку, сохраняющую все данные о текущем подключении клиентов (включая вплоть до протокола прикладного уровня) в структуре данных, доступной одновременно двум процессам (удаляемому и запускаемому), а также средствами ОС уметь share сокет и все его хендлы между двумя разными процессами ( для Windows - https://msdn.microsoft.com/en-us/library/windows/d... ). 
Действительно ли в Вашем случае такой объем разработки стоит обсепечения неразрывности обслуживания ?