Подтвердить что ты не робот

Знать любую кроссплатформенную библиотеку сокетов (windows & Linux) в C?

Я ищу работу сокетов (слушать, принимать, подключаться, возвращать, отправлять, отключать) в Linux и Windows. Мой проект находится на C, поэтому, если кто-то не может подумать о том, как мне интегрировать библиотеки С++ в проект C, библиотека также должна быть в C.

В конечном счете, я бы хотел, чтобы библиотека поддерживала ipv6 и неблокирующий режим, однако эти вещи не являются существенными.

Кто-нибудь знает о каких-либо библиотечных/межплатформенных примерах кода? Даже просто большие фрагменты кода помогут. Пока что несколько библиотек сокетов, которые я нашел, были на С++.

4b9b3361

Ответ 1

Вне рук я могу представить четыре библиотеки:

Ответ 2

Я не знаю одной библиотеки, которая соответствует как Windows, так и Linux, но я думаю, что winsock достаточно похож на программирование сокетов Linux.

В частности, он предоставляет вам "select()" и другие упомянутые функции. Я думаю, вам понадобится очень тонкая оболочка #ifdef, чтобы избежать предупреждений о литье типов.

См. здесь страницу winsock для выбора

Ответ 3

Библиотека plibsys предоставляет все требуемые функции: кросс-платформенный и портативный, легкий, обеспечивает поддержку сокетов IPv4 и IPv6, а также многие другие полезные вещи, такие как многопоточность. Работает с сокетами в неблокирующем режиме (хотя вы также можете переключиться на блокирующий). Имеет неплохую документацию с примерами тестового кода.

Ответ 5

Ptlib обеспечивает кросс-платформенный код С++, который хорошо работает для сокетов. www.opalvoip.org

Хорошо сочетается с потоками. Некоторая поддержка для Mac и BSD. При активной разработке и ремонте. MPL Основная библиотека в Ekiga - предпочтительное настольное приложение, которое делает SIP и H.323

Для окон - он компилируется с помощью MSVC. для linux он компилируется с помощью gcc autoconf make и т.д.

ОК, это С++, но вы можете работать с этим... Имейте источник внутри ptlib/samples - существует много примеров использования ptlib.