Mac OS X начинает открывать временные порты с 49152. Номера портов представляют собой 16-разрядные целые числа без знака, поэтому существует 65535 возможных портов. 65535 - 49152 = 16383. Я думаю, что у вас есть 16 тыс. Портов в TIME_WAIT.
Обновление : вы можете посмотреть на следующие переменные sysctl (8):
net.inet.ip.portrange.lowfirst: 1023 net.inet.ip.portrange.lowlast: 600 net.inet.ip.portrange.first: 49152 net.inet.ip.portrange.last: 65535 net.inet.ip.portrange.hifirst: 49152 net.inet.ip.portrange.hilast: 65535
Я думаю, что если вы установите значение hifirst на что-то меньшее, вы увеличите количество временных портов, доступных в вашей системе.
Возможно, существует опция сокета или что-то, что говорит стеку о том, что он в основном нарушает спецификацию TCP и использует нестандартное значение для TIME_WAIT, но мне не хватает программиста сокетов Mac OS X, чтобы это знать.
Обновление 2 : вы, вероятно, хотите использовать setsockopt (2) для установки SO_REUSEADDR.