salve a tutti ho un problema su questo codice eseguito dal client....
nel terminale mi da un errore sulla getsockname.
potreste aiutarmi?
codice:#include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<netdb.h> //NUMERO DI PORT SUL QUALE IL CLIENT CHIEDE LA CONNESSIONE #define PORT 4000 //FUNZIONE PER INIZIALIZZARE GLI INDIRIZZI void addr_initialize(struct sockaddr_in *indirizzo, int port, long IPaddr) { indirizzo->sin_family = AF_INET; // htons: host to network conversion, short// indirizzo->sin_port = htons((u_short)port); indirizzo->sin_addr.s_addr = IPaddr; } // PROGRAMMA PRINCIPALE void main(int argc,char*argv[]) { //Descrittore del socket int sd; //indirizzo del client struct sockaddr_in mio_addr; //indirizzo del server struct sockaddr_in server_addr; //Dimensione dell'indirizzo client int mio_addr_len = sizeof(mio_addr); //Controllo per la connessione int error; //inizializza indirizzo server addr_initialize(&server_addr , PORT, inet_addr(argv[1])); //Crea l identificatore del socket sd = socket(AF_INET,SOCK_STREAM,0); // crea una connessione sul socket appena creato error = connect(sd,(struct sockaddr*)&server_addr, sizeof(server_addr)); // controllo se la connect() e andata a buon fine if(error==0) { // se la connessione ha avuto successo stampa su schermo connessione eseguita printf("\nHo eseguito la connessione con successo\n"); // scrive nell'indirizzo in mio_addr l'indirizzo del client tramite getsockname getsockname(sd,&mio_addr, &mio_addr_len); // stampa a video il port del client dopo averlo convertito dal formato rete al // formato host tramite ntohs() printf("\nPorta numero: %d\n",ntohs(mio_addr.sin_port)); //chiude il socket close(sd); } else { printf("%s","\nErrore di connessione\n\n"); // se la connessione non è andata a buon fine chiudo il socket close(sd); } }//main

Rispondi quotando