您好,我已经为我的旧windows手机做了一个程序,每5秒发送一次gps数据,温度等,只是出于实验原因创建了一个车队管理系统。
我注意到,尽管我只发送了20kb的数据,但在一小时内就消耗了350kb的空间……
由于我对网络了解不深,一次tcp连接需要多少字节?
也许我应该让套接字保持活动状态,因为我每隔5个seconds.Would就关闭和打开它一次,这样可以节省字节?
MTU在这里也很重要吗?还有没有其他减少开销的想法?谢谢
发布于 2011-03-06 13:38:05
让我们在这里做一些数学运算。
每5秒等于每小时720个连接加上数据。对于每个连接,20K / 720大约是28字节的有效载荷( GPS数据)。
IP and TCP headers along are 48 bytes in addition to whatever data is being sent.
3-way handshake connection: 3 packets (2 out, 1 in) == 96 bytes out and 48 bytes in
Outbound Data-packet: 48+28 bytes == 76 bytes (out)
Inbound Ack: 48 bytes (in)
Close: 48 bytes (out)
Final Ack: 48 bytes (in)
Total out per connection: 220
Total in per connection: 144
Total data send/received per connection: 220+144 = 364
Total data usage in one hour = 364 * 720 = 262K所以我对你的数据使用量估计值是差不多的。
如果你想减少带宽的使用,这里有三个想法:
更新
当我最初发布这篇文章时,我错误地将连接近似地误解为客户端和服务器之间的FIN数据包的单一交换。在实践中,客户端发送FIN作为启动关闭的一部分。然后服务器确认FIN。然后,服务器发送其自己的FIN,该FIN由客户端确认。换句话说,每个连接需要额外的96个字节。重做我们的数学:
Total data send/received per connection =
220+48 + 144+48 = 460
Total data usage in one hour = 460 * 720 = 331K因此,我修改后的一个小时331KB的估计值更接近于操作员所看到的情况。
https://stackoverflow.com/questions/5208878
复制相似问题