如何解决Windows内的C linux上的UDP慢速传输,但在Apple上快速?
我正在通过wifi项目进行实时视频流。
我们使用UDP通过sendto()
文件通过socket.h
函数发送数据报。
每个数据报为1420个字节,并且每个数据报之间的发送持续时间为250 uS。
现在,
从ubuntu(通过Windows)将数据发送到iPad时,由于某种原因sendto()
功能被暂停,并且流很慢且不稳定(我得到的流速率约为1.28mb / sec)。
仅当iPad连接到网络时,才会发生这种现象;如果未连接iPad,我们将获得大约4mb / sec的流量。
对我来说,这很奇怪,因为我印象中UDP协议会继续运行,不会受到接收方的影响。
现在让事情变得更奇怪了,当我使用终端在iMac上运行相同的代码时,我得到了令人讨厌的流速率,而另一端则具有完美的视频....
路由器是2.4GHz 802.11n,具有20Mhz频道
有什么想法吗?
void init_udp_send_socket(char*server_ip,int server_port) {
if ( (server_socket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) == -1)
{
perror("Failed to open socket");
exit(2);
}
memset((char *) &base,sizeof(base));
base.sin_family = AF_INET;
base.sin_port = htons(server_port);
if (inet_aton(server_ip,&base.sin_addr) == 0)
{
perror( "Bad base IP address\n");
exit(1);
}
}
void send_udp_datagram(char* blob,int size) {
printf("size is: %d\n",size);
if (sendto(server_socket,blob,size,(struct sockaddr *) &base,sock_struct_size)==-1)
{
perror( "Failed sending datagram\n");
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。