View Single Post
Old 20-12-2009, 13:04   #1
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
[C] - Errore nel binding

Sto imparando la programmazione di rete in ambiente Unix!

Ho creato un programma server che crea una socket e successivamente cerca di associarla ad un indirizzo!
questo è un pezzo del codice
Codice:
//creazione socket server
        sock_ds = socket(PF_INET, SOCK_STREAM, 0);
        if(sock_ds == -1)Error_("Errore creazione socket");

        //creazione e associazione ad indirizzo
        struct sockaddr_in my;
        my.sin_family = AF_INET;
        my.sin_port = 60000;
        inet_pton(AF_INET, "192.168.1.4", &my.sin_addr.s_addr);

        if(bind(sock_ds, (struct sockaddr*)&my, sizeof(my)) == -1)Error_("Errore binding server");

        //messa in ascolto del server
        if(listen(sock_ds, 3) == -1)Error_("Errore ascolto del server");

        //struttura del client
        struct sockaddr_in client;
        int client_dim = sizeof(client);
        int client_ds;
il problema sorge quando termino il server e successivamente vado a riavviarlo! Risultato della chiamata bind() è -1! Questa cosa mi succede anche con il client: dopo aver contattato il server, eseguito le operazioni che volevo eseguire, e successivamente uscito, non sono più in grado di far riuscire la bind() per un certo tempo! Non riesco a venirne a capo! Ci sono suggerimenti?

Ho fatto anche altre prove! Dato che al -1 della chiamata bind() uscivo con la macro Error_, ho semplicemente inserito un puts("Errore bind"); e poi continuato ad eseguire il programma! Funziona correttamente! Cioè non c'è nessun problema dato che la comunicazione funziona!
clockover è offline   Rispondi citando il messaggio o parte di esso