2009-05-07 4 views
7

Sono interessato a imparare come scrivere un software server di rete estremamente efficiente e non mi dispiace sporcarmi le mani con puntatori, prese e filettatura. Sto parlando di un server in grado di gestire migliaia di connessioni simultanee. Non c'è molta elaborazione per ogni cliente, ma un po '.Esempi di progettazione di server di rete effettivi, scritti in C

Sei a conoscenza di esempi di codice per server di rete veramente efficienti?

Opzionalmente punti per codice piccolo e ben documentato che è anche multipiattaforma.

risposta

1

Date un'occhiata al nginx, lighttpd e varnish per alcune popolari server HTTP ad alte prestazioni.

BTW, Attualmente sto lavorando sulla combinazione di edge-triggered epoll con multithreading (più user-level discussioni swapcontext stile/fibre) - V. http://svn.cmeerw.net/src/nginetd/trunk/ per un po 'di codice work-in-progress (anche se questo è scritto in C++).

1

Questo potrebbe non essere esattamente quello che stai cercando, ma ricordo brevemente di aver visto Space Tyrant alcuni anni fa e ho pensato che suonasse alla grande.

http://librenix.com/?inode=6240

Speranza che aiuta!

5

troverete un sacco di buone referenze e la discussione sulla costruzione di server di rete altamente scalabili nella pagina di Dan Kegel The C10K problem.

+0

Un elenco di implementazioni del server open source che utilizzano i vari approcci descritti può essere trovato nella parte inferiore della pagina. –

+0

È una buona pagina, è stata lì prima. Tuttavia, ritengo che manchi la parte di esempio della pagina, principalmente nelle soluzioni con trigger edge. Quindi, la domanda :) – Andrioid