我正在测试通过异步TCP套接字连接到C#服务器的应用程序 并每30秒发送1个字节(实现心跳)。 大约一个小时后,应用程序发送了132个数据包(一个字节)到服务器, 数据包已收到确定。 iPhone应用程序连接一次到服务器,之后通过打开的连接发送数据包(服务器什么都不发送)。 我这样做是为了衡量使用的带宽。所以我去了I Phone>设置>一般>用法 它测得366KB和344KB(我在测试前重置了统计数据)。 没有其他应用程序连接到手机上安装的网络,我尝试了大约5次,结果相似。
这是自然的吗?我只发送了132个字节,但使用的带宽约为710千字节(比如多7.000个)。 TCP / IP协议是否有那么多的带宽开销? 我想我的Http轮询实现会产生最糟糕的结果,导致http标头。答案 0 :(得分:1)
不,还有其他东西正在使用带宽,例如Safari或邮件检查更新等。它不能每包上下3K。
答案 1 :(得分:0)
如果您使用的是wifi连接,则可以使用另一台计算机上的Wireshark来捕获进出iPhone的所有流量。通过这种方式,您可以获得有关使用额外带宽的内容/位置的指示。
答案 2 :(得分:0)
我还测试了从服务器通过http(一个用plain / text = 1响应的asp.net httphandler)获得1个字节(大约)。我希望这种方法会因为http标头而使用更多的带宽。但经过测试,Iphone设备报告了这一点 来自服务器的每个1byte请求(包含所有http标头)的成本约为3.5kb。 与使用直接tcp套接字时每个数据包的平均成本(5kb - 7kb)相比仍然更少。
答案 3 :(得分:0)
发送或接收的每个数据包都有开销,以及设置或拆除连接的额外开销。发送许多小数据包将导致大量TCP开销,并且仅测量在socked另一端接收的字节将不包括开销。如果您想要更少,请切换到UDP并处理自己维护连接的复杂性。
此外,可能还有其他操作系统进程在后台使用带宽。禁用所有邮件/日历/推送通知以获得最佳效果。