Знаешь какую-нибудь кроссплатформенную библиотеку сокетов (windows & Linux) в C? - PullRequest
14 голосов
/ 09 февраля 2012

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

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

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

Ответы [ 6 ]

9 голосов
/ 09 февраля 2012

Я могу подумать о четырех библиотеках:

4 голосов
/ 13 июня 2016

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

3 голосов
/ 09 февраля 2012

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

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

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

0 голосов
/ 25 февраля 2013

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

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

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

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

0 голосов
/ 11 июня 2012

Библиотека Boost включает эти функции.

0 голосов
/ 09 февраля 2012
...