本机测试udp丢包问题

发送端和接收端在同一台主机上,发送端共发送500个,但是接收端每次只能共收到278个。如果发送端发的慢点的话,接收端能全部收到,但是总共发送的数据量很小,接收缓冲区完全够放,应该不是发送端发送过快导致的。
问题:
为什么接收端仅收到278个呢

//packet
struct packet{
    //帧id
    uint16_t frame_id;
    //数据
    int data;
};
//server发送0-499给client
//int buffer[500];
for(int i=0;i<500;i++){
    packet pt;
    pt.frame_id = i;
    memcpy(&pt.data,buffer+i,sizeof(pt.data));
    int size = sendto(sockfd,&pt,sizeof(pt),0,(struct sockaddr *)&client,sizeof(client));
    //printf("frame_id %d data: %d\n",i);
    //sleep(0.01);
}

//client
while(1){
    int size = recvfrom(sockfd,recv_buf,sizeof(recv_buf),0,(struct sockaddr *)&server,&addr_len);
    if(size<=0) continue;
    printf("received:frame_id:%d",recv_buf[0].frame_id);
}
阅读 2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题