PDA

Visualizza la versione completa : [c] Client/server p2p aiuto sui processi


miccia
30-07-2010, 19:10
Salve, sono arrivato all'esasperazione...ho provato di tutto..devo fare un client che allo stesso tempo sia anche un server. Mi spiego meglio, devo programmare una struttura p2p a directory centralizzata. Tutto bene fino ad ora, l'unico grande problema che un generico client deve collegarsi al server per ricevere una lista di peer, e poi collegarsi a quesi peer per il download. Allo stesso modo voglio fare un men al server per la gestione, mentre soddisfa le richieste ai vari client. Ho implementato la parte per soddisfare le richieste con il fork(), ogni volta che arriva una connessione crea un processo figlio che si occupa di soddisfare le richieste del client connesso. Tutto testato, tutto funzionante...bene...ora dove lo piazzo il men? vi posto il codice del main del server dalla BIND. Mi occorre che un processo si occupa di gestire il men, e un altro che stia sulla listen. Ditemi se vi occorrono altre info...grazieee milleeeeeee



// assegnamo al socket un processo tramite la funzione BIND
if (bind(sd, (struct sockaddr *)&server,sizeof(server)) < 0){//Assegno l'indirizzo alla socket
printf("Errore nella chiamata di sistema BIND!\n");
exit(-1);}
printf("Nome Server:%s IP Server:%s Porta:%d\n",host,inet_ntoa(**(struct in_addr**)ip_host->h_addr_list),ntohs(server.sin_port));

listen(sd, 100); // mettiamo il server in ascolto creando una coda di 100 connessioni

if (signal(SIGCHLD, sig_chld_handler) == SIG_ERR) {
fprintf(stderr, "errore in signal");
exit(1);}
while(1) {


len=sizeof(client);

if((temp_sd= accept(sd,(struct sockaddr *)&client, &len)) < 0) { //accetta la connessione
printf("Problemi di connessione con il peer:%s->Disconnesso\n",inet_ntoa(client.sin_addr));
exit(-1);}
//crea un processo che si occuper della connessione
if ((pid = fork()) < 0) {
perror("Errore nella creazione di un processo figlio.\n");
exit(-1);}
if (pid == 0) { // un processo figlio
if(close(sd)==-1){
printf("Errore in close");
exit(1);}
server_echo(temp_sd,client);}
else {
close(temp_sd);}}

exit(0);}

fabioovetto
02-08-2010, 17:38
Salve sono nuovo al sito.
Vorrei porre una mia domanda che sarebbe:
come posso istallare il programma di programmazione C sul mio sistema operativo ubunto?
Ho provato a istallare un programma ma quando lo scarico,e lo apro,me lo apre sotto forma di cartella,cio non mi apre il programma d'istallazione.
Cerco di arrampicarmi ovonque :messner: , su qualsiasi sito,sul motore di ricerca google e non riesco a trovare le informazioni che mi servono.
Come devo fare? :confused: Attendo vostre risp perch da 2 giorni che sto "sbattendo la testa" :dh: sul pc per trovare un metodo.
Grazie mille!!!
:facepalm:

alka
02-08-2010, 18:10
Originariamente inviato da fabioovetto
Salve sono nuovo al sito.
Vorrei porre una mia domanda che sarebbe [...]


Non ci si aggancia a discussioni altrui per porre un'altra domanda.
Leggi il Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887) di quest'area.

Loading