R: [Pluto-help] Comunicazione di rete: Aiuto.
Losciale Roberto
RLosciale a Fideuramvita.it
Mar 19 Mar 2002 17:43:40 CET
MI SONO DIMENTICATO UNA COSA PARDON.....LA STRINGA DELL'IP LA DEVI COPIARE
NEL VETTORE E NON ASSEGNARE ....
STRCPY(ARRAY_HOST[I], HOST);
> -----Messaggio originale-----
> Da: diego.joker a inwind.it [SMTP:diego.joker a inwind.it]
> Inviato: martedì 19 marzo 2002 16.49
> A: pluto-help a lists.pluto.linux.it
> Oggetto: [Pluto-help] Comunicazione di rete: Aiuto.
>
> Ciao a tutti, sto facendo un driver per comunicazione di rete con KDE, ma
> ho dei problemi con l'identificatore degli IP address chiamanti:
> cioè una volta fatto accept salvo l'identificatore di socket creato dal
> server in un array e l'indirizzo IP dell'host che mi ha chiamato, in un
> altro array sempre allo stesso indice in cui ho salvato l'ID di socket, e
> poi incremento l'indice così da non sovrascrivere i dati salvati. Il
> problema è che nel momento in cui arriva una seconda chiamata, l'ID di
> socket viene correttamente salvato nell'indice successivo, lasciando
> inalterato il precedente valore, mentre nel caso dell'array degli IP
> address mi vengono sovrascritti tutti i precedenti valori memorizzati con
> l'ultimo indirizzo IP chiamante. Non riesco proprio a capire che tipo di
> errore ho fatto considerando che il codice per settare i due array è
> identico e uno funziona e l'altro no. Perchè? Spero che possiate aiutarmi
> perchè non so come uscirne; vi riporto sotto il codice in questione:
>
> // thread per la gestione dell' accept
> void *accept_thread(void*arg)
> {
> sockaddr_in from;
> int sockNum=(int)arg;
> int newSock;
> unsigned int fromLen=sizeof(from);
> for(;;) // ciclo continuo per la gestione delle chiamate
> {
> if ( (newSock=::accept(sockNum,(struct sockaddr
> *)&from,&fromLen)) > 0 )
> {
> set_idconn(newSock); // salvo l'ID socket nel
> primo buffer
> char*host=::inet_ntoa(from.sin_addr);
> set_idhost(host); // salvo l'IP
> address nel secondo buffer
> }
> }
> pthread_exit((void*)0);
> }
>
> // array degli ID di connesione
> void set_idconn(int idconn)
> {
> for (int i=0;i<31;i++) // 32 è il numero massimo di connessioni che
> posso stabilire
> {
> if (i>31) throw;
> if (array_conn[i]==0)
> {
> array_conn[i]=idconn;
> break;
> }
> }
> }
>
> // array degli IP address
> void set_idhost(char* host)
> {
> for (int i=0;i<31;i++)
> {
> if (i>31) throw;
> if (array_host[i]==0)
> {
> array_host[i]=host;
> break;
> }
> }
> }
>
>
>
> _______________________________________________
> pluto-help mailing list
> pluto-help a lists.pluto.linux.it
> http://lists.pluto.linux.it/mailman/listinfo/pluto-help
More information about the pluto-help
mailing list