Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在流量生成中接收的数据多于发送的数据_C_Sockets - Fatal编程技术网

C 在流量生成中接收的数据多于发送的数据

C 在流量生成中接收的数据多于发送的数据,c,sockets,C,Sockets,我正在开发一代交通工具。 运行Sender/Receiver后,发现我获得的数据比Send to received多。 我错在哪里?计时器也不会在精确的循环时间停止?发送方提前停止,接收方稍后停止 /* gcc CGenS.c-o服务器 gcc CGenS.c-Recv ./Server-m1-s localhost-p5000-z256-t1000-ptt ./Recv-m0-p5000-z256-pT 问题: */ if(模式==1) { serv_addr.sin_family=AF_IN

我正在开发一代交通工具。 运行Sender/Receiver后,发现我获得的数据比Send to received多。 我错在哪里?计时器也不会在精确的循环时间停止?发送方提前停止,接收方稍后停止

/*

gcc CGenS.c-o服务器 gcc CGenS.c-Recv

./Server-m1-s localhost-p5000-z256-t1000-ptt ./Recv-m0-p5000-z256-pT

问题:

*/

if(模式==1)
{
serv_addr.sin_family=AF_INET;
b复制((char*)服务器->h_地址,(char*)和服务地址sin_地址s_地址,服务器->h_长度);
serv_addr.sin_port=htons(端口号);
if(connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
错误(“连接错误”);
对于(i=0;i0)
{
n=读取(newsockfd、缓冲区、数据包大小);
TotalRecv=TotalRecv+数据包大小;
num_pkt_rec++;
printf(“%d字节接收:%d\n”,num\u pkt\u rec,sizeof buffer);
}
gettimeofday(&tv2,NULL);
printf(“总接收时间=%f秒\n”(双精度)(tv2.tv_-usec-tv1.tv_-usec)/1000000+(双精度)(tv2.tv_-sec-tv1.tv_-sec));
printf(“收到的打包机总数:%d\n”,num\u pkt\u rec);
printf(“接收的总字节数:%d\n”,TotalRecv);
关闭(newsockfd);
关闭(sockfd);
}
返回0;
}

终止
0
放在
buffer[]
中的位置是
strlen(buffer)
write()调用中显示定义行为所需的位置?我认为甚至不应该使用
strlen
,而应该简单地使用
packet\u size
。另外,
TotalRecv=TotalRecv+packet\u size
应该是
TotalRecv=TotalRecv+n
,在进行添加之前,您确实应该检查
n
结果是否存在可能的错误。嘿,数据问题已经解决..谢谢
if(mode==1)    
{
    serv_addr.sin_family = AF_INET;      
    bcopy((char *)server->h_addr,(char *)&serv_addr.sin_addr.s_addr, server->h_length);             
    serv_addr.sin_port = htons(portno);          
    if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)           
        error("ERROR connecting");              

        for (i=0;i<packet_size;i++)
            buffer[i]='A';

        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);
   // }*/
    n = write(sockfd,buffer,strlen(buffer));
    num_pkt_send++;
    TotalSend=TotalSend+packet_size;
    if (n < 0) 
    {
         error("ERROR writing to socket");
          exit(1);
    }
    printf("%d Bytes Send: %d\n",num_pkt_send,sizeof buffer);
    gettimeofday(&tv2, NULL);
    //}
} while((tv2.tv_sec-tv1.tv_sec)!=Loop_time);
  printf ("Total Sending time = %f seconds\n",(double) (tv2.tv_usec - tv1.tv_usec) / 1000000 + (double) (tv2.tv_sec - tv1.tv_sec));
 printf("Total Bytes Send: %d\n",TotalSend);
 printf("Total Packet Send: %d\n",num_pkt_send);
    close(sockfd);
    }

else if (mode==0)
{

     serv_addr.sin_family = AF_INET;
     serv_addr.sin_addr.s_addr = INADDR_ANY;
     serv_addr.sin_port = htons(portno);

 if (bind(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr))< 0) 
              error("ERROR on binding");
     listen(sockfd,5);
     clilen = sizeof(cli_addr);

     newsockfd = accept(sockfd,(struct sockaddr *) &cli_addr, 
                 &clilen);
     if (newsockfd < 0)      
     error("ERROR on accept");
     bzero(buffer,packet_size);
     gettimeofday(&tv1, NULL);
while(n>0)
{
     n = read(newsockfd,buffer,packet_size);


     TotalRecv=TotalRecv+packet_size;
     num_pkt_rec++;

     printf("%d Bytes Received: %d\n",num_pkt_rec ,sizeof buffer);


}
gettimeofday(&tv2, NULL);
printf ("Total Receiving time = %f seconds\n",(double) (tv2.tv_usec - tv1.tv_usec) / 1000000 + (double) (tv2.tv_sec - tv1.tv_sec));
 printf("Total Packer Received: %d\n",num_pkt_rec);
 printf("Total Bytes Received: %d\n",TotalRecv);
     close(newsockfd);
     close(sockfd);

}
return 0; 
}