Faisons quelques calculs ici.
Toutes les 5 secondes, 720 connexions par heure plus données. 20K/720 est d'environ 28 octets de charge utile (vos données GPS) pour chaque connexion.
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
Donc, je suis dans l'approximation de vos estimations d'utilisation de données.
Si vous cherchez à réduire l'utilisation de la bande passante, voici trois idées:
ramenons sur votre taux de mise à jour.
Ne pas démonter la connexion à chaque fois. Gardez-le ouvert. Étant donné que vos coordonnées GPS sont périodiquement mises à jour, vous pouvez envisager d'utiliser UDP au lieu de TCP. Il y a un risque de perte de paquets, mais étant donné que vous retransmettez des données plus fraîches toutes les 5 secondes de toute façon, une mise à jour perdue ne vaut pas la bande passante à retransmettre. Les en-têtes IP et UDP combinés ne font que 28 octets sans surcharge de "connexion".
MISE À JOUR
Quand je l'origine posté, j'ai mal compris à tort le lien étroit comme un seul échange de paquets FIN entre le client et le serveur. En pratique, le client envoie un FIN dans le cadre de l'initialisation du CLOSE. Ensuite, le serveur ACKs le FIN. Ensuite, le serveur envoie son propre FIN qui est ACK'd par le client. En d'autres termes, 96 octets supplémentaires par connexion. Refaisant nos calculs:
Total data send/received per connection =
220+48 + 144+48 = 460
Total data usage in one hour = 460 * 720 = 331K
Donc, mon estimation révisée de 331KB en une heure est un peu plus proche de ce que la scie OP.
merci, estimation très utile :) – GorillaApe
J'ai envoyé 290 paquets gps info. 8240 octets au total. Selon les calculs il devrait prendre ~ 106 kb.Mais il a fallu 150kb. Je ne peux pas comprendre d'où viennent ces octets – GorillaApe