[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RiminiLUG-General] socket.h
- To: riminilug-general@xxxxxxxxxxxx
- Subject: Re: [RiminiLUG-General] socket.h
- From: Ivan Tarozzi <ivan@xxxxxxxxxxxx>
- Date: Tue, 26 May 2009 14:50:14 +0200
- Delivered-to: battarsa@xxxxxxxxxxxx
- Delivered-to: riminilug.it_riminilug-general@xxxxxxxxxxxxxxxxxxxxxxxxx
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:message-id:date:from :user-agent:mime-version:to:subject:references:in-reply-to :content-type:content-transfer-encoding; bh=rmFtuo9RVqHDiF84C8+Ca9vrE6oWwNJMKsidv57J9Bo=; b=lqC0OgqvpezVhcNabV1H+aRIpExC+eNgLon7xEm5QLf/OP3vLhN9cBHxhw6FfFzc1B tNIk1ITFinD6tGKzq/ntSJ5Hi2q6TYGvr3MHFl0yMtuelIXKFThd+NPXpr46xQ19zCKu fYR0y5XkngGpdiM5GyPbbv5OSe51IegMZXJ4w=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:subject :references:in-reply-to:content-type:content-transfer-encoding; b=BnB65kx7NMk/zfd8RnNL80sBclG9VIbXHC9mqKYnmdEpcHuJ48Wv+S8hQrEWFX1pmm vLwkf2rSIenNgNjsCmFCt4yDRx7xy7oUo56T+AGeEGbQsM7JTAfYvh4M+7r33WGpJGkR iwN0SO7+RlZKULdtBXFMdhQ8h1YakAtuI0eGo=
- In-reply-to: <1243334979.6355.15.camel@uruzuki>
- References: <1243310207.4997.6.camel@uruzuki> <200905260837.29832.battarsa@riminilug.it> <1243334979.6355.15.camel@uruzuki>
- Reply-to: riminilug-general@xxxxxxxxxxxx
- Sender: Ivan Tarozzi <itarozzi@xxxxxxxxx>
- User-agent: Thunderbird 2.0.0.21 (X11/20090409)
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