Что является аналогом функции WSAAsyncSelect () в Apple GCC? - PullRequest
0 голосов
/ 22 апреля 2011

Скажите, пожалуйста, самый безболезненный способ переноса функции WSAAsyncSelect () на GCC ...

Ответы [ 3 ]

1 голос
/ 22 апреля 2011

Я использую функцию pselec t.

1 голос
/ 23 апреля 2011

Хотя select() и pselect() могут работать для вашего приложения, они очень сильно отличаются от WSAAsyncSelect(). Эти функции позволяют вам управлять блокировкой в ​​другом неблокирующем сокете или набором сокетов. То же самое касается poll().

Асинхронные сокеты Winsock, с другой стороны, никогда не блокируются. Существует также большое количество асинхронных уведомлений, от которых, несомненно, зависит ваш код.

Я не верю, что существуют какие-либо нативные API-интерфейсы на OS X, которые обеспечивают подобное поведение. Тем не менее, можно создать такую ​​вещь. Немного погуглил появился CocoaAsyncSocket .

Если вы предпочитаете не зависеть от сторонних библиотек, я предлагаю создать что-то поверх CFSocket компании Cocoa, как это сделали разработчики CocoaAsyncSocket, если вы будете портировать через программу с графическим интерфейсом, а не перейти к основным функциям, таким как select(). Есть что-то, что можно сказать об использовании единой среды разработки для всего.

Если вам нужен кроссплатформенный код, библиотека wxWidgets имеет иерархию классов wxSockets *, которая эмулирует асинхронный механизм сокетов Winsock. В целом, wxWidgets структурирован во многом как MFC, что упрощает портирование, если вы знакомы с этим.

1 голос
/ 22 апреля 2011

Полагаю, вы хотите взглянуть на функцию select

...