[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RiminiLUG-General] socket.h



Ilia Platone ha scritto:
Il giorno mar, 26/05/2009 alle 08.37 +0200, Samuele Battarra ha scritto:
Il martedì 26 maggio 2009 05:56 Ilia Platone ha scritto:
C'è per caso qualcuno che ha mai programmato usando il file header
sys/socket.h?
Sto cercando di fare un semplice server usando la libreria standard, ma
nel creare più socket con accept() il programma va in stallo.
Grazie in anticipo.
Se installi le pagine di man per lo sviluppo (su debian è il pacchetto manpages-dev) Il comando man di fornisce la guida anche per tutte le funzioni di programmazione.
Lo farò.

intanto puoi dare un'occhiata ai seguenti link giusto per una descrizione generale delle varie funzioni della libreria socket (ma ce ne sono tantissimi altri!) :

http://www.feelinglinux.com/articles/usosocket.jsp
http://www.enricomilano.it/berkeley.asp


In particolare per accept() c'è scritto chiaramente che la funzione è bloccante.
Quindi come si fa a creare e gestire più socket client su un socket
server? c'è modo di dialogare mentre si accettano altre connessioni? o
vanno accettate a priori?

Grazie.


Non ho ben capito cosa intendi per "c'è modo di dialogare"
Se il problema è solo non bloccare il processo principale mentre rimani in ascolto di una connessione allora la soluzione "dovrebbe" essere quella di usare la listen() -che non è bloccante- e solo quando ricevi una connessione utilizzi la accept()

Se invece la tua richiesta è quella di poter accettare più connessioni in ingresso, allora forse potresti valutare la creazione di un server multithread oppure (a seconda di cosa vuoi fare) di un server che quando riceve una connessione lancia un'altra "copia" di se stesso (scusa la banalizzazione, ma non conosco a che livello programmi. puoi dare un'occhiata alla funzione fork() )

Giusto per darti l'idea:

http://evilcry.netsons.org/tuts/Fork(%20).txt
ftp://ftp.elet.polimi.it/users/Luca.Breveglieri/Laurea/Fondamenti%20di%20Informatica%20II/socket.rtf


Facci sapere!


Ivan