ah, avevo capito un'altra cosa ...
Qua:
codice:
typedef struct{
char id; // Identificativo terminale
int porta;
struct in_addr indirizzo;
int richiesta; //Richiesta che mi fa (tramite un numero intero tra 1 e 9, capisco cosa vuole)
int risposta;
double tempotrasmissione;
}tipo_riga;
al posto di:
codice:
struct in_addr indirizzo;
prova con:
codice:
struct sockaddr_t client;
cosi per ogni client c'è una struttura sockaddr_t, cosi quando cicli gli passi la struttura.
Una cosa del tipo:
codice:
for (i=0;i<MAXST;i++){
recvfrom(s, request, BUFLEN, 0, (struct sockaddr*)&ca, &clean ); // Il server riceve i messaggi.
printf("\nRicevuto richiesta da: %s:%d.\nRICHIESTA:%c\nTERMINAL_ID:%s \n",
inet_ntoa(ca.sin_addr), ntohs(ca.sin_port), *request,request+2);
tabella[i].id=atoi(request+2);
bzero(tabella[i].client, sizeof(tabella[i].client);
tabella[i].client.sin_family = AF_INET;
tabella[i].client.sin_port = ca.sin_port;
tabella[i].client.sin_addr = ca.sin_addr;
tabella[i].porta=ntohs(ca.sin_port);
tabella[i].richiesta=atoi(request);
}
Qui ho l'algoritmo che mi calcola le risposte in base a tutte le richieste giunte.
for(i=0;i<MAXST;i++) { //Ora devo spedire ogni risposta ad ogni client che ha fatto richietsa.
sendto(s, response, BUFLEN, 0, (struct sockaddr*)&tabella[i].client, sizeof(tabella[i].client));
}