Questions :
I am running a client Server Program whose Sender and Receiver loop is given below .I have multi threaded Sender using OMP .As per My logic Receive should receive same amount of data send by Sender ,But its receiving more packet than Sender sent .I am not able to identify the Bug !!
Code:
/*
Running As Follow :
gcc UTGen.c -o Sender
gcc UTGen.c -o Receiver
./Receiver -m 0 -p 5000 -z 256 -P t
export OMP_NUM_THREADS=4
./Sender -m 1 -s localhost -p 5000 -z 256 -T 10 -P t
*/
// Sender Code
gettimeofday(&tv1, NULL);
do
{
#pragma omp parallel private(nthreads, tid)
{
/* Obtain thread number */
tid = omp_get_thread_num();
if (tid == 0)
{
nthreads = omp_get_num_threads();
printf("Number of threads = %d\n", nthreads);
}
#pragma omp critical
{
n = write(sockfd,buffer,packet_size);
num_pkt_send++;
TotalSend=TotalSend+n;
}
if (n < 0)
{
error("ERROR writing to socket");
exit(1);
}
printf("%d Bytes Send: %d\n",num_pkt_send,n);
gettimeofday(&tv2, NULL);
}
} while((tv2.tv_sec-tv1.tv_sec)<=Sen_Loop_time);
// Receiver Code
gettimeofday(&tv1, NULL);
while(n>0)
{
n = read(newsockfd,buffer,packet_size);
TotalRecv=TotalRecv+n;
num_pkt_rec++;
printf("%d Bytes Received: %d\n",num_pkt_rec ,n);
}
gettimeofday(&tv2, NULL);