Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    45

    [C] Problema varibili in un proxy concorrente

    Salve a tutti,mi scuso se nel precedente topic nn ho usato un titolo adeguato!
    ho scritto in C il codice di un proxy concorrente...il mio problema è ke ogni volta ke si esegue la funzione ke svolge le funzioni di proxy in questa funzione tutte le variabili partono sempre dai valori iniziali e nn dall'ultimo valore.
    ad esempio io uso una variabile contatore ke di volta in volta ne incremento il valore,ma ogni volta ke si esegue la funzione (cioè arriva una richiesta) ke svolge il proxy, assume sempre lo stesso valore...
    Nn so se mi sono spiegato bene...Grazie

  2. #2
    OT
    non paghi il forum a carattere, evitiamo abbreviazioni tipo "ke" "nn" etc
    OT

    hai provato a dichiararle "static" ?
    -----
    101110101011101111100000
    -----

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    45
    ho provato come mi hai suggerito...

    le ho perfino dichiarate come varibili globali all'inizio del codice

  4. #4
    prova a postare i codice con la quale chiami la funzione e la funzione stessa.
    -----
    101110101011101111100000
    -----

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    45
    questo è parte del main:

    while(1){

    len = sizeof(cli_add);
    if((conn_fd=accept(list_fd,(struct sockaddr*) &cli_add,&len))<0){
    perror("errore nell' esecuzione della accept\n");
    exit(1);
    }



    if((pid=fork())<0){
    perror("errore nella creazione del figlio\n");
    exit(1);
    }

    if(pid==0){ // processo figlio


    proxyhttp(conn_fd);
    exit(0);
    }

    else{ // processo padre
    close(conn_fd);
    }
    }

    questa è la funzione ke svolge il proxy:
    void proxyhttp(int sockfd){

    char sendbuffer[MAX];
    char rcvbuffer[MAX];
    static richiesta testa; //per gestire la cache uso le liste linkate,questo è il puntatore alla lista delle richieste
    static risposta testa1; //puntatore alla lista delle risposte
    static int i=1;
    static int j=1;
    int nread,nwrite;
    int pres;




    while((nread=read(sockfd,sendbuffer,MAX))>0){
    sendbuffer[nread]=0;

    printf("SOCKET: %s\n",sendbuffer); // richiesta http,dopo va inserito il cache delle risorse



    if((pres=controllorichieste(testa,sendbuffer))==0) { // se la risorsa nn c'è allora apro un socket verso il server web
    printf("PRES = %d\n",pres);
    printf("TESTA PRIMA INSER= 0x%x\n",testa);
    inserimentorichieste(i,&testa,sendbuffer);
    printf("TESTA DOPO INSER= 0x%x\n",testa);
    // inserisco la richiesta in un file txt ed in una lista
    i++;
    printf("valore di i: %d\n",i);

    int newfd;
    struct sockaddr_in newsock;

    const char* serverip = "143.225.250.12";

    if ( (newfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
    perror("Socket creation error\n");
    exit(1);
    }

    memset((void *)&newsock, 0, sizeof(newsock));
    newsock.sin_family = AF_INET;
    newsock.sin_port = htons(80);

    if((inet_pton(AF_INET,serverip,&newsock.sin_addr)) <0){
    perror("errore nella conversione dell'indirizzo\n");
    exit(1);
    }


    if(connect(newfd,(struct sockaddr* )&newsock,sizeof(newsock))<0){
    printf("Errore nella connessione: %s", strerror(errno));
    exit(1);
    }


    FullWrite(newfd,sendbuffer,strlen(sendbuffer));
    FullRead(newfd,rcvbuffer,MAX);
    printf("SOCKET di risp: %s\n",rcvbuffer);

    inserimentorisposte(j,&testa1,rcvbuffer);
    collegamento(testa,testa1); // inserisco la risorsa in un file di testo e nella lista

    j++;
    FullWrite(sockfd,rcvbuffer,strlen(rcvbuffer));
    }

    else{ // risorsa presente
    int file;


    if((file=open("./cache/filetemp.txt",O_RDONLY))<0){
    printf("errore nell' apertura del file\n");
    }
    FullRead(file,rcvbuffer,MAX);
    FullWrite(sockfd,rcvbuffer,strlen(rcvbuffer));


    }

    }

    return;
    }
    le funzioni controllocache,inserimentorichiesta ed altre funz nn standard sono definite in altri file sorgenti che includo in questo...

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    45
    mi scuso per aver abbreviato di nuovo le parole!!! Sorry

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 © 2026 vBulletin Solutions, Inc. All rights reserved.