На очень загруженном сервере у вас может не хватить сокетов. Возможно, вам придется настроить некоторые параметры TCPIP. Настройте эти два в реестре:
HKLM\System\CurrentControlSet\Services\Tcpip\Parameters
MaxUserPort REG_DWORD 65534 (decimal)
TcpTimedWaitDelay REG_DWORD 60 (decimal)
По умолчанию задержка в несколько минут между освобождением сетевого порта (сокета) и его повторным использованием. Кроме того, в зависимости от версии ОС, в диапазоне, который будут использовать Windows, всего несколько тысяч. На сервере выполните это в командной строке:
netstat -an
и посмотрите на результаты (труба к файлу проще всего: netstat -an> netstat.txt). Если вы видите большое количество портов с 1025-> 5000 в состоянии задержки по времени, то это ваша проблема, и она решается путем настройки максимального пользовательского порта с 5000 до 65534 с помощью записи реестра выше. Вы также можете отрегулировать задержку, используя приведенную выше запись реестра, чтобы быстрее перезапускать порты.
Если это не проблема, то, скорее всего, проблема в количестве ожидающих соединений, которые вы установили в своем методе Listen ().