Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    1

    [c] Client/server p2p aiuto sui processi

    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);}

  2. #2

    scaricare programma di programmazione C su ubunto

    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 , su qualsiasi sito,sul motore di ricerca google e non riesco a trovare le informazioni che mi servono.
    Come devo fare? Attendo vostre risp perchè è da 2 giorni che sto "sbattendo la testa" sul pc per trovare un metodo.
    Grazie mille!!!
    FaBiO

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Moderazione

    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 di quest'area.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.