clockover
20-12-2009, 13:04
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
//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!
Ho creato un programma server che crea una socket e successivamente cerca di associarla ad un indirizzo!
questo è un pezzo del 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!