Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
243 views
in Technique[技术] by (71.8m points)

本机测试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
",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);
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神解答

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...