Dies bei TCP-sockets schließen Sie automatisch nach einiger Zeit, wenn keine Daten gesendet werden?

Ich habe eine client-server-situation, wo der client öffnet einen TCP-socket an den server, und manchmal längere Zeit vergehen wird, mit der keine Daten gesendet zwischen Ihnen. Ich begegnet ein Problem, wenn der server versucht, Daten zu senden an den client, und es scheint erfolgreich zu sein, aber der client erhält nie, und nach ein paar Minuten, es sieht aus wie der client getrennt wird.

Brauche ich zum senden eine Art "keep alive" Paket jeder einmal in eine Weile?

Bearbeiten: Zu beachten, diese ist mit Gleichgesinnten auf dem gleichen computer. Der computer hinter einem NAT ist, dass nach vorne eine Reihe von ports auf diesem computer. Der client verbindet mit dem server öffnet die Verbindung über DNS. d.h. er verwendet das mydomain.net & port anschließen.

  • u kann manuell legen Sie die timeout-Werte. In java die variable für es ist SO_TIMEOUT
  • In C wird die socket-option Konstante für eine Zeitüberschreitung beim Lesen ist SO_TIMEOUT. In Java rufen Sie die setSoTimeout () - Methode, aber auch dies setzt ein read timeout. Keiner von denen ist, was er zu Fragen.
  • ich dachte, die setSoTimeout () - Methode setzt die variable SO_TIMEOUT.
  • Natürlich tut es das. Aber das ist nicht, was Sie sagte. Es gibt keine SO_TIMEOUT an alle, die in Java, geschweige denn eine variable.
  • Ich bezog mich auf docs.oracle.com/javase/1.4.2/docs/api/java/net/...
InformationsquelleAutor Nick Banks | 2012-07-29
Schreibe einen Kommentar