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