2009-07-28 3 views
13

sebbene non abbia lavorato professionalmente con le prese, le trovo interessanti. Ho letto alcune parti della Programmazione di rete Unix di Richard Stevens (considerata la Bibbia, suppongo che venga riferita da tutti quelli che chiedo) ma il problema è che gli esempi richiedono un header universale unp.h che è un PIA da usare.Buona lettura su programmazione Socket Unix/Linux?

Alcuni di voi suggeriscono una buona lettura per la programmazione dei socket in Unix/Linux? Considerando che sono un programmatore C/C++ relativamente esperto.

risposta

20

Il riferimento canonico è Programmazione di rete UNIX di W. Richard Stevens. upn.h è in realtà solo un'intestazione di aiuto, per rendere più chiari gli esempi di libri - non fa nulla di particolarmente magico.

Per alzarsi e correre molto rapidamente, è difficile andare oltre Beej's Guide To Network Programming using Internet Sockets.

+4

È stato riferito da tutti quanti, sono sicuro che ci sono altre buone letture pure. Provare i suoi esempi è un PIA. Il problema che vedo sono le intestazioni fornite negli esempi sono wrapper per le funzioni effettive e non è così che si impara l'API. E, soprattutto, non si compilano (almeno sul mio sistema dopo un numero di prove ripetute fallito ripetutamente) – rocknroll

+0

Su quale sistema Linux stai lavorando, allora? La pagina di Beej dice Fedora Core (versione 3 IIRC) ... –

12

ho usato Beej's Guide to Network Programming

C'è un sacco di esempi di client e il codice del server con le spiegazioni ad ogni passo del cammino.

+0

+1: Questa è una grande guida rapida. Dovrebbe essere abbastanza per farti scrivere le tue app casuali basate su socket. – ojrac

1

APUE è un buon modo per familiarizzare con l'ambiente unix e con la programmazione in C nel contesto UNIX in modo da poter passare alla programmazione socket.

+0

@alok Questo libro è già menzionato nella risposta di caf. –

1

Al di là dei libri Stevens già citati, ho trovato i seguenti due per essere veramente buono e relativamente breve legge per problemi di TCP/IP di programmazione (soprattutto Gotchas ed errori comuni):

Dopo di che, probabilmente avrete bisogno di leggere il codice sorgente per appli rete ons. Le varie utilità e applicazioni di Linux sono un buon punto di partenza.

1

È possibile fare riferimento al documento che ho scritto quando ho insegnato la laurea cource informatica, Computer Networking Fundamentals, a ufl.edu molto tempo fa: "A Crash Course In Unix TCP/IP Socket Programming".

La carta è vecchia. Sono sbalordito dal fatto che quando ho Binged per questo, ci sono ancora una mezza dozzina di riferimenti là fuori.

Alcune delle semantiche del compilatore e dei file di intestazione necessari potrebbero essere cambiati un po 'nel corso degli anni, ma le basi della configurazione di socket UDP o TCP e di materiale DNS di base discusso sono ancora valide oggi.

Buona fortuna!

1

Questo sembra essere il dilemma classico di guadare in piscina o tuffarsi prima nella parte più profonda.

FWIW Trovo fastidioso anche il codice del wrapper di Steven e ho faticato per ottenere almeno alcuni esempi su tutte le piattaforme su cui li ho provati. Ciò detto, i wrapper nascondono per lo più banali errori di gestione che sarebbero stati ripetitivi, non illuminanti e occupati più spazio in un libro già di grandi dimensioni. (Anche se in tutta onestà gli editori possono buttare via l'ultimo 1/4 del libro che copre XTI per fare spazio.)

La programmazione di rete è abbastanza profonda di un argomento che è possibile alternare cavalcando le onde di superficie e facendo palle di cannone. Sono state menzionate diverse buone fonti per un rapido avvio che ti consentiranno di superare la fase "wow, I got it to work". Ma quando hai bisogno di ascendere al "Ho bisogno che sia robusto e affidabile perché il mio lavoro/prodotto dipende da questo", arriverai ad apprezzare Stevens, le verruche e tutto il resto, per la sua straordinaria capacità di anticipare il tuo problema attuale.

Ci sono stati capitoli del lavoro di Steven che ho ignorato con successo per anni. Ma ero molto grato che fossero lì quando avevo bisogno di loro.

1

Il volume di programmazione di rete UNIX 1/2, di W. Richard Stevens è leggendario.

Ithilgore ha anche scritto un documento molto dettagliato su raw sockets.

Inoltre, Beej's Guide to Socket Programming è ben scritto, semplice da capire e una raccomandazione precisa.

Qualunque cosa tu abbia letto, assicurati di scrivere codice complementare.

0

È inoltre considera il riferimento più generale, Unix ™ Sistemi di programmazione: Comunicazione, concorrenza, e le discussioni da Kay A. Robbins, Steven Robbins Prentice Hall ISBN: 0-13-042411-0

ancora, il libro di Richard Steven è il riferimento più completo su questo argomento specifico

0

il libro di Michael Kerrisk (Egli è anche Linux man-pages di manutentore) the linux programming interface

c'è tutto di u nix programmazione; i capitoli da 57 a 61 sono sui socket.