На самом деле один сокет не будет обрабатывать все данные на сервере. На сервере у вас есть прослушивающий сокет, единственная цель которого - принимать входящие соединения от ваших клиентов. Затем вы получаете одно соединение / сокет для каждого клиента.
Операционная система попытается равномерно распределить пропускную способность между всеми подключенными сокетами (вашими и другими приложениями). Сокеты UDP имеют более высокий приоритет, чем сокеты TCP.
Сервер может обрабатывать столько клиентов, сколько вам нужно, если пропускная способность сети может справиться с этим. Если у вас есть несколько клиентов, вы можете использовать потоки для сокетов / клиентов, а если у вас их много, я предлагаю вам прочитать об асинхронной обработке (методы BeginXX / EndXX).
Если пропускная способность является проблемой, вам следует ограничить отправку и получение (самый простой подход - использовать Thread.Sleep), чтобы не задушить сетевое соединение.