Newsgroup: it.comp.lang.c
Titolo: Applicazione Peer To Peer

Ciao a tutti.
Avrei bisogno di un'applicazione che agisca contemporaneamente sia da
client che da server (come in un'architettura peer to peer). Mi spiego
meglio:
in questa applicazione, il server deve stare sempre in ascolto.
Contemporaneamente, nel caso in cui si volesse mandare per esempio un
messaggio, si deve avere la possibilità di avviare un client.
Inoltre il server deve essere in grado di accettare più connessioni.
Non posso avviare due applicazioni distinte (una per il server e una
per il client)
In rete ho trovato molti server e client ma non un'applicazione di
questo tipo.
Posto che non ho familiarità con il fork() e con la gestione dei
thread in C, vi chiedo se sapete dove posso trovare qualcosa del
genere in rete.
Sicuramente risparmierei un bel po' di lavoro...ma soprattutto di
tempo!
Grazie anticipatamente
Roberto

 genere in rete.
Visto che stai usando linux basta che tu cerchi i sorgenti di qualche 
programma della tua distribuzione che più si avvicina alle tue necessità.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 programma della tua distribuzione che più si avvicina alle tue necessità.
in effetti ho cercato (e ancora continuo), ma ancora non ho trovato
nulla.
Hai qualche idea (o nome) in merito?
Grazie per il tempo dedicatomi
Roberto




 (o xinetd), ma telnetd, proftpd , e tanti altri.
Consideriamo tre host che devono comunicare tra loro.
Ogni host deve poter ricevere dagli altri e inviare dati  agl altri.
Per far ciò è quindi necessario che ci sia sempre un server in ascolto che 
possa accettare connessioni multiple.
E' anche necessario, all'occorrenza, avviare un client per inviare i dati.
Si tratta quindi di mettere insieme un server e un client usando i threads, 
ovvero facendo uso della fork().
Come dicevo, prima di mettermi a fare un software di questo tipo, chiedevo 
se conoscevate qualcosa del genere.
D'accordissimo su Emule e infatti ho scaricato i sorgenti, ma essendo un 
software ben più complesso di quello che mi necessità, è un po' complicato 
estrapolare solo le funzionalità di cui ho bisogno.
Ti ringrazio, comunque, per la collaborazione
ciao 

 e un client usando i threads, ovvero facendo uso della fork().
Lascia stare i thread, e dai una occhiata a libevent:
http://monkey.org/~provos/libevent/
Trovi anche un piccolo esempio.
Comunque se, a quanto sembra, non sei esperto di programmazione di rete, 
dovresti cominciare con lo studiare qualche buon libro.
Saluti  Manlio Perillo

 dovresti cominciare con lo studiare qualche buon libro.
infatti! ho programmato software di rete solo in java. Ecco perchè cercavo 
un'applicazione già pronta.
Tutto qui.
Cmq...grazie! 

Roberto wrote:

Un client ftp potrebbe fare al tuo caso..
-- 
g4b0, linux user n. 369000
http://gabo.homelinux.com

 Un client ftp potrebbe fare al tuo caso..
e come?
Grazie anche a te 

Roberto wrote:

Nel senso che è un codice molto semplice che implementa al contempo un
client (control connection) ed un server (data connection).
Per maggiori info RFC 959.
Per codice di esempio google.
Un piccolo anticipo:
[snip]
RFC 959                                                     October 1985
File Transfer Protocol
   2.3.  THE FTP MODEL
      With the above definitions in mind, the following model (shown in
      Figure 1) may be diagrammed for an FTP service.
                                            -------------
                                            |/---------\|
                                            ||   User  ||    --------
                                            ||Interface|<--->| User |
                                            |\----^----/|    --------
                  ----------                |     |     |
                  |/------\|  FTP Commands  |/----V----\|
                  ||Server|<---------------->|   User  ||
                  ||  PI  ||   FTP Replies  ||    PI   ||
                  |\--^---/|                |\----^----/|
                  |   |    |                |     |     |
      --------    |/--V---\|      Data      |/----V----\|    --------
      | File |<--->|Server|<---------------->|  User   |<--->| File |
      |System|    || DTP  ||   Connection   ||   DTP   ||    |System|
      --------    |\------/|                |\---------/|    --------
                  ----------                -------------
                  Server-FTP                   USER-FTP
      NOTES: 1. The data connection may be used in either direction.
             2. The data connection need not exist all of the time.
                      Figure 1  Model for FTP Use
      In the model described in Figure 1, the user-protocol interpreter
      initiates the control connection.  The control connection follows
      the Telnet protocol.  At the initiation of the user, standard FTP
      commands are generated by the user-PI and transmitted to the
      server process via the control connection.  (The user may
      establish a direct control connection to the server-FTP, from a
      TAC terminal for example, and generate standard FTP commands
      independently, bypassing the user-FTP process.) Standard replies
      are sent from the server-PI to the user-PI over the control
      connection in response to the commands.
      The FTP commands specify the parameters for the data connection
      (data port, transfer mode, representation type, and structure) and
      the nature of file system operation (store, retrieve, append,
      delete, etc.).  The user-DTP or its designate should "listen" on
      the specified data port, and the server initiate the data
      connection and data transfer in accordance with the specified
      parameters.  It should be noted that the data port need not be in
      the same host that initiates the FTP commands via the control
      connection, but the user or the user-FTP process must ensure a
      "listen" on the specified data port.  It ought to also be noted
      that the data connection may be used for simultaneous sending and
      receiving.
[/snip]
