codice:
void riesegui_richieste(tester *current_tester){
struct sockaddr_in server;
int sockfd;
db_pacchetti *db=current_tester->db;
int i=0;
sockfd = socket (PF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
{
perror ("socket");
exit(1);
}
bzero ((char*)&server, sizeof(struct sockaddr_in));
server.sin_family = AF_INET;
server.sin_port = htons(db->port);
if(inet_aton(db->host,&(server.sin_addr))==0){
perror("impostazione indirizzo..");
exit(1);
}
if (connect(sockfd, (struct sockaddr *)&server, sizeof(server))) {
perror("error connecting..");
exit(1);
}
for(i=0;i<db->current;i++){
printf("sono il tester %i e inizio l'immissione del pacchetto %i\n",current_tester->tester_id,i);
if(i>0){
//dormo per riproduzione dei pacchetti fedele alla registrazione
printf("sono il tester %i al pacchetto %i e dormo per %i secondi \n",current_tester->tester_id,i,(db->db[i].timestamp)-(db->db[i-1].timestamp));
sleep((db->db[i].timestamp)-(db->db[i-1].timestamp));
printf("sono il tester %i al pacchetto %i e mi sveglio \n",current_tester->tester_id,i);
}
// printf("sendo a %s:%i: \n%s\n",db->host,db->port,db->db[i].payload);
printf("sono il tester %i e inizio l'invio del pacchetto %i \n",current_tester->tester_id,i);
if(send(sockfd,db->db[i].payload,db->db[i].size,0)<0){
perror("error sending..");
exit(1);
}
printf("sono il tester %i e ho finito l'invio del pacchetto %i \n",current_tester->tester_id,i);
//ora ascolto la risposta del server
int size_buff=255;
char buff[size_buff];
int check=1;
printf("sono il tester %i e ascolto la risposta del server per il pacchetto %i \n",current_tester->tester_id,i);
while(check>0){
//recv(sockfd,buff,sizeof(char)*size_buff,0)==size_buff*sizeof(char)
printf("sono il tester %i e provo a ricevere %i dati per il pacchetto %i \n",current_tester->tester_id,sizeof(char)*size_buff,i);
check=recv(sockfd,buff,sizeof(char)*size_buff,0);
printf("sono il tester %i e ho ricevuto %i dati invece di %i per il pacchetto %i \n",current_tester->tester_id,check,sizeof(char)*size_buff,i);
buff[check]='\0';
printf("%s",buff);
}
printf("sono il tester %i e ho finito di ascoltare la risposta del server per il pacchetto %i \n",current_tester->tester_id,i);
//incremento il contatore generale di 1 perchè ho elaborato un pacchetto
*(db->counter_shared)+=1;
printf("sono il tester %i e ho elaborato il pacchetto %i\n",current_tester->tester_id,i);
}
printf("sono il tester %i e chiudo la connessione\n",current_tester->tester_id);
if(close(sockfd)<0){
perror("error closing..");
exit(1);
}
printf("sono il tester %i e ho finito\n",current_tester->tester_id);
}
e questo è l'output che ottengo: