Ви помиляєтесь - унікальність сокета визначається чотирма факторами:
- локальна IP-адреса
- номер місцевого порту
- віддалену IP-адресу
- номер віддаленого порту
Пропонуючи мережеві послуги, 1. і 2. зазвичай є статичними (наприклад, IP 10.0.0.1, порт 80), але якщо ви не очікуєте тисяч підключень від одного клієнта (або одного шлюзу NAT), ви не збираєтеся натискати на межі для можливих комбінацій 3. і 4., перш ніж вичерпаєте місцеві ресурси.
Тож хоча клієнт практично не використовує порт, який вже використовується для з'єднання, щоб відкрити з'єднання з іншою цільовою IP-адресою, виснаження номера порту стане найменшою вашою проблемою майже для будь-якої програми - будь то на сервері чи сторона клієнта.
Проблема є справжньою з NAT-шлюзами (маршрутизаторами), що обслуговують клієнтів з великою кількістю відкритих вихідних з'єднань (наприклад, торентів) - там ви побачите вичерпання номерів портів після того, як пул портів, доступний для NAT, буде випорожнений. У цьому випадку NAT-шлюз не в змозі створити будь-яких додаткових асоціацій, таким чином ефективно відключаючи клієнтів від Інтернету.