我正在使用BSD套接字使用udp数据包训练PC和iPhone之间的带宽估算工具。
火车的例子
for (int i=0; i<numberOfPackets; i++)
{
temp = sendto(udpSocket_send,(char *)&sendPacket, PKT_SIZE, 0, (struct sockaddr*) &saUDPSend,slen_s);
if(temp == -1 || temp != PKT_SIZE)
{
printf("\nError while sending packet %i\n",i);
break;
}
}
情景是:
- 通过AP连接局域网的PC
- 通过WLAN在同一AP上连接的iPhone
- 没有其他客户连接
pc和iphone都试图估算带宽,以便他们交换探测器和估算器角色
当iphone接收到火车时,它可以正确估计可用带宽
当电脑收到火车并试图估计它时,该值远低于前者
我认为估计的带宽是对称的,但事实并非如此
我还尝试运行wireshark并注意到当iphone发送火车时,它发送的每个数据包,它都会测试频道并交换cts和rts数据包。
这可能会导致延误
有没有办法在PC端正确估算这个问题?