Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    problema client server in c

    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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Devi dire di quale errore si tratta
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.