2011-03-10 6 views
2

J'ai une application Java agissant comme un serveur et un téléphone Android agissant comme un client. Ils communiquent sur des sockets TCP.Comment désactiver TCP Keepalive?

J'ai souvent le client en veille et quand son tampon se remplit je veux que la radio wifi puisse aller dormir. Le problème est que le client ne dort pas. J'ai remarqué que wireshark dit que mon serveur envoie un paquet TCP KeepAlive environ toutes les demi-secondes pour que le wifi ne puisse pas dormir. J'ai essayé ce qui suit sur le serveur et le client.

connectionSocket.setKeepAlive(false); 

Mais cela semble ne rien changer. J'utilise wireshark pour analyser le trafic. Voici une capture d'écran de wireshark ... les lignes noires indiquent où mon client est endormi et son tampon de réception est plein. Puis-je empêcher les paquets keepAlive d'être envoyés par le serveur?

Merci!

+1

Je ne peux pas voir votre capture d'écran. – secmask

Répondre

1

Les connexions TCP restent ouvertes jusqu'à leur fermeture, le mécanisme keep alive est là pour détecter les échecs de connexion.

Vérifiez ce lien: Does a TCP socket connection have a "keep alive"?

+0

Ah, selon un camarade dans votre lien, il semble qu'il n'y a pas vraiment grand-chose que je puisse faire. Une question de suivi que j'ai alors est de savoir comment 802.11psm peut mettre la radio en veille s'il y a tellement de paquets en vie envoyés par le serveur ... semble que le premier est envoyé après .5s puis 1s puis 2s. Soem sorte de fonction exponentielle, mais il lui faut encore plusieurs secondes pour arriver à un point où les paquets sont suffisamment éloignés pour dormir. – Michael

+0

Je pense que vous avez deux options, soit fermer la connexion et la rouvrir avant d'envoyer le contenu du tampon, ou utiliser UDP (qui est sans connexion) au lieu de TCP. Voici un exemple: http://www.java-samples.com/j2me/udp-datagram-free-j2me-sample-program.htm –

+0

@JoelArnold, cette réponse n'explique pas pourquoi la fonction setKeepAlive (false) est ne fonctionne pas .. – Pacerier

Questions connexes