2012-02-08 9 views
14

Szukam komunikacji gniazda (słuchaj, akceptuj, połącz, recv, wyślij, rozłącz) w systemie Linux i Windows. Mój projekt jest w C, więc jeśli ktoś nie wymyśli sposobu, w jaki mogę zintegrować biblioteki C++ z projektem C, biblioteka również będzie musiała znajdować się w C.Czy znasz bibliotekę gniazd wieloplatformowych (Windows i Linux) w języku C?

Ostatecznie chciałbym, aby biblioteka miała obsługę ipv6 i tryb bez blokowania, jednak te rzeczy nie są niezbędne.

Czy ktoś zna dowolny przykładowy kod bibliotek/między platformami? Pomogą w tym nawet duże fragmenty kodu. Do tej pory kilka bibliotek gniazd, które znalazłem, było w C++.

Odpowiedz

9

od ręki, mogę myśleć o czterech bibliotek:

+0

Dziękuję bardzo, to wspaniały początek.W tej chwili jestem patrząc na libuv, ponieważ wydaje się, że ma dobrą równowagę między wielkością/prostotą i wydajnością. Czy z ciekawości, jakie wyszukiwane hasła przyniosły te wyniki? czy już o nich wiesz? –

+1

@ 64bit_twitchyliquid: Nie pamiętam, kiedy pierwszy raz spotkałem GLiba, ale według mnie zajmuje on miejsce standardowej biblioteki dla C bardziej w zgodzie z innymi językami; Znalazłem APR i NSPR, gdy szukałem biblioteki abstrakcji platformy i wiem o libuv, ponieważ jest używane przez język programowania Rust; w rzeczywistości, wszystkie z nich oprócz libuv są wymienione na stronie http://www.shlomifish.org/open-source/portability-libs/, pierwszy wynik wyszukiwania google dla * C cross platform abstrakcji lib * – Christoph

3

nie wiem jednej biblioteki, który jest zgodny zarówno z systemem Windows i Linux, ale myślę winsock jest na tyle podobny do gniazda programowania Linux.

W szczególności dostarcza ci "wybierz()" i inne wymienione funkcje. Sądzę, że będziesz potrzebować bardzo cienkiej owijki #ifdef, aby uniknąć ostrzeżeń o rzutowaniu typu.

See here the winsock page for select

-2

Ptlib dostarcza wieloplatformowy kod C++, który działa dobrze na gniazda. www.opalvoip.org

Ładnie radzi sobie z wątkami. Niektóre wsparcie dla mac i BSD. W trakcie aktywnego rozwoju i konserwacji. MPL Biblioteka rdzenia w Ekiga - preferowana aplikacja komputerowa, która obsługuje SIP & H.323

Dla systemu Windows - kompiluje się z MSVC. dla systemów Linux, kompiluje z gcc autoconf zrobić itd

OK, to jest C++, ale można pracować z tym ... Mają źródło wewnątrz ptlib/próbek - istnieje wiele przykładów wykorzystania tam ptlib.

+0

Pytał specjalnie o bibliotekę C. – Chase

2

Biblioteka plibsys zapewnia wszystkie wymagane funkcje: wieloplatformową i przenośną, lekką, zapewnia obsługę gniazd IPv4 i IPv6, a także wiele innych przydatnych rzeczy, takich jak wielowątkowość. Działa z gniazdami w trybie bez blokowania (choć można również przełączyć na blokujący). Ma całkiem dobrą dokumentację z przykładami kodu testowego.

Powiązane problemy