|
|||||||
|
|
|
![]() |
|
|
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: 740
|
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 14: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: 23:53.


















