2012-02-08 9 views
14

Sto cercando di fare comunicazioni socket (ascoltare, accettare, collegare, recv, inviare, disconnettere) sia in linux che in windows. Il mio progetto è in C, quindi a meno che qualcuno non riesca a pensare a un modo per integrare le librerie C++ in un progetto C, la libreria dovrà essere anche in C.Conoscenza di qualsiasi libreria di socket multipiattaforma (Windows e Linux) in C?

In definitiva, vorrei che la libreria avesse il supporto per ipv6 e la modalità non bloccante, tuttavia, queste cose non sono essenziali.

Qualcuno sa di eventuali librerie/codice di esempio multipiattaforma? Anche solo frammenti di codice di grandi dimensioni potrebbero aiutare. Finora le poche librerie di socket che ho trovato sono state in C++.

risposta

9

fuori mano, posso pensare a quattro biblioteche:

+0

Grazie mille, questo è un inizio fantastico.Al momento, sto guardando libuv, in quanto sembra avere un buon equilibrio tra dimensione/semplicità ed efficienza. Per curiosità, quali sono stati i termini di ricerca che hanno prodotto questi risultati? o ne conoscevi già? –

+1

@ 64bit_twitchyliquid: non ricordo quando ho incontrato per la prima volta GLib, ma nella mia mente, occupa il posto di una lib standard per C più in sintonia con ciò che offrono altre lingue; Ho trovato APR e NSPR quando ho cercato una piattaforma di astrazione lib e so di libuv perché è usato dal linguaggio di programmazione di Rust; in realtà, tutti questi eccetto libuv sono elencati su http://www.shlomifish.org/open-source/portability-libs/, il primo risultato di una ricerca su google per l'astrazione della piattaforma * C lib * – Christoph

3

Non so una libreria che è conforme sia Windows che Linux, ma penso winsock è abbastanza simile alla programmazione dei socket Linux.

In particolare fornisce 'select()' e le altre funzioni citate. Immagino che avrai bisogno di un wrapper #ifdef molto sottile per evitare avvisi di tipo casting.

See here the winsock page for select

-2

Ptlib fornisce un codice C++ multipiattaforma che funziona bene per le prese. www.opalvoip.org

Copre bene con i fili. Qualche supporto per mac e BSD. Sotto lo sviluppo e la manutenzione attivi. MPL Libreria principale in Ekiga - l'app desktop preferita che esegue SIP & H.323

Per Windows - viene compilato con MSVC. per Linux, si compila con gcc autoconf rendere ecc

OK, è C++, ma si può lavorare con quello ... Avere una fonte interna alla ptlib/campioni - ci sono molti esempi di utilizzo di ptlib lì.

+0

Stava chiedendo specificamente per una libreria C. – Chase

2

La libreria plibsys offre tutte le funzionalità richieste: multipiattaforma e portatile, leggera, fornisce supporto per socket IPv4 e IPv6 oltre a molte altre funzioni utili come il multithreading. Funziona con i socket in modalità non bloccante (anche se puoi passare a uno di blocco). Ha una buona documentazione con gli esempi del codice di prova.