|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
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; 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! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2005
Città: ~
Messaggi: 706
|
domanda scema: chiudi il socket "sock_ds" quando termini il server?
ocio: durante la stessa esecuzione del server, la bind va eseguita una e una sola volta. in sostanza uno pseudo codice è: Codice:
sock = socket(...) bind listen while ((sock_client = accept(...)) != -1) { gestisci creazione del client (processo/thread) }
__________________
Ciao ciao cagnolino Billy ![]() ![]() ![]() MacMini late 2009, 2.53GHz, 4GB ram, 320GB hard disk, Snow Leopard 10.8.2 - iPod Nano 6th gen. XBOX Live GamerTag: InsaneMau Ultima modifica di maulattu : 20-12-2009 alle 13:48. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Porca miseria mi sono dimenticato...
![]() ![]() ![]() Rimanendo in tema avrei ancora un paio di dubbi in materia: 1) usando la macro INADDR_ANY per l'assegnazione dell'indirizzo, quale indirizzo assegno in realtà? L'indirizzo di localhost oppure quello di eth0? 2) Lato client vorrei usufruire di una ephemeral port. Nella specifica della sin_port dovrei mettere il valore 0 giusto? Ragazzi se mi vengono altri dubbi non abbiate paura.. chiederò ancora ![]() ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:34.