PDA

Visualizza la versione completa : Socket error: Address already in use; come pulirlo?


IRide
23-06-2006, 11:52
Quando eseguo la funzione bind() su un programma server che ho creato, poco dopo aver fermato il server, mi ritrovo che l'indirizzo utilizzato precedentemente č ancora in uso, come l'errore nel titolo. Esiste un comando che mi permette di cancellarlo cosė da poter riutilizzare subito il server?
Grazie! :ciauz:

n0t
23-06-2006, 12:12
close(socket);
provato?

IRide
23-06-2006, 12:26
Sė, e non solo, ho anche utilizzato questo:

memset((void *)&serv_add, 0, sizeof(serv_add));

che a quanto ho letto (ma potrei aver capito male) pulirebbe l'indirizzo del server.

IRide
23-06-2006, 12:46
Praticamente il problema avviene quando chiudo il server con ctrl+d, che ovviamente non gli permette di chiudere la connessione al socket.

Ho risolto intercettando i segnali SIGINT (ctrl+d) e SIGTSTP (ctrl+z) in modo tale da fargli chiudere prima la connessione e poi uscire dal programma.

Ora non succede pių. :)

Loading