BSD-совместимая оболочка вокруг winsock? - PullRequest
0 голосов
/ 21 декабря 2009

Я пытаюсь перенести приложение Linux на Windows. Приложение не слишком сложное, использует весь достаточно стандартный код, с несколькими внешними зависимостями. Основными зависимостями являются libelf (который прекрасно компилируется под mingw), pthreads (кажется, доступна версия win32) и сокеты. Основная проблема с сокетами ... Windows предоставляет WinSock, но это не на 100% совместимо с сокетами BSD (Беркли), используемыми всеми * nixes. Что мне интересно, так это кто-нибудь написал оболочку для окон, которая представляет API сокета BSD, но вызывает Winsock на бэкэнде, чтобы облегчить перенос?

Ответы [ 2 ]

1 голос
/ 26 июня 2010

В большинстве случаев вам просто нужно убедиться, что WSAStartup () и WSACleanup () вызываются в начале и в конце, иначе базовые сокеты BSD будут транслироваться довольно хорошо. Вы можете создать некоторую статическую глобальную переменную, которая будет проверяться для каждого вызова вызовов сокета, и вызывать WSAStartup () и WSACleanup () соответственно. Что касается poll () ... ну, это довольно легко выбрать ().

1 голос
/ 21 декабря 2009

Я бы порекомендовал использовать cygwin.dll . Он предназначен для переноса * nixes в Windows, включая сокеты, файловый ввод-вывод и т. Д.

...