Больше опроса ()? - PullRequest
       27

Больше опроса ()?

1 голос
/ 19 марта 2011

Назад снова!

Я занимался асинхронным программированием сокетов с помощью select () в Windows, и он работал довольно хорошо. Однако он может масштабироваться только до 1024 клиентов. Методoll () - способ обойти это ограничение, и я знаю, что он работает как на Linux, так и на Unix. Но это не работает с системой Windows правильно?

Я читал о WsaPoll (), имеет ли он точно такую ​​же функциональность? На какие библиотеки мне нужно будет ссылаться, чтобы использовать его?

Можно ли безопасно увеличить номер сокета в Windows с помощью FD_SETSIZE? Моя конечная программа будет на сервере Linux. Однако сейчас я тестирую систему Windows. Должен ли я просто поменять свою тестовую машину на Linux? (вероятно, собирается в любом случае)

В противном случае, что бы вы порекомендовали использовать с Windows?

(извините за все вопросы, я занимаюсь исследованиями самостоятельно, обещаю = D)

Ответы [ 3 ]

3 голосов
/ 19 марта 2011

Да WSAPoll() ведет себя как poll().Вам нужно будет использовать WSAGetLastError, чтобы выяснить, что идет не так.Коды ошибок не совпадают, и в зависимости от WindowsSDK и версии вашей системы коды posix могут быть или не быть определены в заголовке winsock2.

Чтобы использовать WSAPoll, необходимо включить winsock2.h иссылка на ws2_32.lib и запуск приложения в Windows Vista / Server 2008 и более поздних версиях.

Однако наличие в коде WSAPoll не всегда останавливает его компиляцию в Windows XP, и вместо этого вы получите ошибкупри запуске приложения.

Если вы не собираетесь запускать приложение в Windows, я рекомендую пропустить боль в SDK, build, dll и версии Windows и настроить Linux vm для разработки.

2 голосов
/ 19 марта 2011

libevent будет использовать лучший доступный механизм для событийно-ориентированного программирования в Windows, Linux, Solaris, OS X и всех производных BSD.

1 голос
/ 19 марта 2011

В Windows WSAAsyncSelect должно позволять обрабатывать события из тысяч сокетов в одном потоке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...