本机测试udp丢包问题

发布于 2022-09-12 03:56:46 字数 783 浏览 26 评论 0

发送端和接收端在同一台主机上,发送端共发送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);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文