Progetto: errore "transport endpoint is not connected"

di il
6 risposte

Progetto: errore "transport endpoint is not connected"

Ciao a tutti,

devo fare un progetto per l'università, funziona bene senza mettere la directory ma mettendola writen mi dà “transport endpoint is not connected”.

testo: https://drive.google.com/file/d/1Cd-SieDpL12YUGZ2VRZQpyJQaIdNky8Z/view?usp=sharing

mio lavoro:  https://drive.google.com/drive/folders/1vU5leCh9rBMyWjmrzhGDseXEsgmBek-A?usp=sharing

mi potreste aiutare?

Grazie.

6 Risposte

  • Re: Progetto: errore "transport endpoint is not connected"

    Ma secondo te uno si scarica il pdf con il compito e tutti i sorgenti, li compila, li prova e ti dice cosa non va? Ci hai scambiato per il tutor del tuo corso a Pisa? 

    Forse, dico forse, potresti cominciare riportare qui SOLO la parte del codice con la linea in cui su manifesta l'errore (più o meno) e cominciare a ragionare insieme…

  • Re: Progetto: errore "transport endpoint is not connected"

    Si manifesta su writen risultato

        scritti=writen(file_socket, &risultato, sizeof(long));
        if(scritti==-1){
            perror("writen risultato");
            return;
        }

    server:

    void collector(){
        int file_socket;
        Sockaddr_un indirizzo_server;
        int connessione;
        long risultato;
        ssize_t letti;
        size_t lunghezza;
        char* nome=NULL;
        Puntatore lista=NULL;
        file_socket=socket(AF_UNIX, SOCK_STREAM, 0);
        if(file_socket==-1){
            perror("socket");
            return;
        }
        memset(&indirizzo_server, '0', sizeof(indirizzo_server));
        indirizzo_server.sun_family=AF_UNIX;
        strncpy(indirizzo_server.sun_path, NOME_SOCKET, strlen(NOME_SOCKET)+1);
    
        int ritorno;
        ritorno=bind(file_socket, (Sockaddr*) &indirizzo_server, sizeof(indirizzo_server));
        if(ritorno==-1){
            perror("bind");
            return;
        }
    
        ritorno=listen(file_socket, MAX_CONNESSIONI);
        if(ritorno==-1){
            perror("listen");
            return;
        }
        while(termina=='n'){
            connessione=accept(file_socket, NULL, NULL);
            if(errno == EINTR)
                break;
            if(connessione==-1){
                perror("accept");
                continue;
            }
            letti=readn(connessione, &risultato, sizeof(long));
            if(letti==-1){
                perror("readn risultato");
                return;
            }
            if(risultato==STAMPA){
                close(connessione);
                stampa(lista);
                continue;
            }
            letti=readn(connessione, &lunghezza, sizeof(size_t));
            if(letti==-1){
                perror("readn lunghezza");
                return;
            }
    
            nome=malloc(sizeof(char)*(lunghezza+1));
            if(nome==NULL){
                perror("malloc");
                return;
            }
    
            letti=readn(connessione, nome, sizeof(char)*lunghezza);
            if(nome==NULL){
                printf("nome e' vuoto\n");
            }
            if(letti==-1){
                perror("readn nome");
                return;
            }
            nome[lunghezza]='\0';
    
            if(risultato==FINE){
                close(connessione);
                free(nome);
                break;
            }
            inserisci(&lista, risultato, nome);
            close(connessione);
            free(nome);
    
        }
        stampa(lista);
        distruggi(&lista);
        unlink(NOME_SOCKET);
        return;
    }
    

    client:

    void gestisci_connessione(char* nome, long risultato){
        size_t lunghezza=strlen(nome);
        ssize_t scritti;
        int file_socket=socket(AF_UNIX, SOCK_STREAM, 0);
        if(file_socket==-1){
            perror("socket");
            return;
        }
    
        int ritorno;
    
        Sockaddr_un indirizzo_server;
        memset(&indirizzo_server, '0', sizeof(indirizzo_server));
        indirizzo_server.sun_family=AF_UNIX;
        strncpy(indirizzo_server.sun_path, NOME_SOCKET, strlen(NOME_SOCKET)+1);
    
        ritorno=connect(file_socket, (Sockaddr*) &indirizzo_server, sizeof(indirizzo_server));
        scritti=writen(file_socket, &risultato, sizeof(long));
        if(scritti==-1){
            perror("writen risultato");
            return;
        }
        if(risultato==FINE){
            close(file_socket);
            return;
        }
        if(risultato==STAMPA)
            return;
        scritti=writen(file_socket, &lunghezza, sizeof(size_t));
        if(scritti==-1){
            perror("writen lunghezza");
            return;
        }
        scritti=writen(file_socket, nome, sizeof(char)*lunghezza);
        if(scritti==-1){
            perror("writen nome");
            return;
        }
        close(file_socket);
    }
  • Re: Progetto: errore "transport endpoint is not connected"

    Hai fatto debugging? La connect va a buon fine? Hai controllato?

  • Re: Progetto: errore "transport endpoint is not connected"

    Ecco gli errori

    50 ../sysdeps/x86_64/multiarch/strlen-avx2.S: File o directory non esistente.
    120	../sysdeps/unix/syscall-template.S: File o directory non esistente.
    81	../sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S: File o directory non esistente.
    24	../sysdeps/unix/sysv/linux/connect.c: File o directory non esistente.
    
  • Re: Progetto: errore "transport endpoint is not connected"

    Di quali errori parli adesso? Di compilazione? L'errore era un altro, che c'entrano questi?

  • Re: Progetto: errore "transport endpoint is not connected"

    Ho sbagliato a fare debugging

Devi accedere o registrarti per scrivere nel forum
6 risposte