Альтернативная библиотека:
Вам следует рассмотреть возможность использования boost asio . Это кроссплатформенная сетевая библиотека, которая упрощает многие задачи, которые вам, возможно, придется выполнить.
Вы можете найти пример исходного кода , который вы ищете здесь .
О пределе 64:
Нет жесткого ограничения на 64 соединения, которое вы испытаете с хорошим дизайном. В основном, если вы используете какую-то модель потоков, вы не будете испытывать это ограничение.
Вот некоторая информация о лимите, о котором вы слышали:
4.9 - Каковы ограничения "64 розетки"?
Существует два ограничения на 64 гнезда:
Механизм событий Win32 (например,
WaitForMultipleObjects ()) может только
ждать 64 объекта события одновременно.
Winsock 2 обеспечивает
WSAEventSelect () функция, которая позволяет
вы используете механизм событий Win32 для
ждать событий на розетках. Потому что это
использует механизм событий Win32, вы можете
только ждать событий на 64 сокетов в
время. Если вы хотите ждать больше
чем 64 объекта события Winsock на
время, вам нужно использовать несколько
темы, каждый ждет не более
64 розетки.
Функция выбора () также ограничена
в определенных ситуациях до ожидания на 64
розетки за раз. FD_SETSIZE
константа, определенная в winsock.h
определяет размер fd_set
структуры, которые вы передаете, чтобы выбрать (). Это
по умолчанию установлено 64. Вы можете
определить эту константу для более высокого значения
прежде чем #include winsock.h, и
это заменит значение по умолчанию.
К сожалению, по крайней мере один
стек Microsoft Winsock и некоторые другие
Многоуровневые поставщики услуг предполагают
по умолчанию 64; они будут игнорировать
розетки за 64-й в большем
fd_sets.
Вы можете написать тестовую программу, чтобы попробовать
это на системах, которые вы планируете
поддержка, чтобы увидеть, если они не
ограничено. Если они есть, вы можете получить
вокруг этого с потоками, так же, как вы
будет с объектами событий.
Источник