Ich habe diesen socat-Befehl, der einwandfrei ausgeführt wird, aber wenn keine Daten übertragen werden, stirbt er nach genau 5 Minuten ab und ich verstehe nicht, warum, da ich ihn so eingerichtet habe, dass nach den ersten 10 Sekunden alle 10 Sekunden 100 Keepalive gesendet werden . Nach dem, was ich von der Socat-Manpage verstanden habe, sollte sie 1000 Sekunden lang am Leben bleiben, was 16 Minuten entspricht. Wenn ich versuche, keepcnt auf 200 zu setzen, erhalte ich außerdem "setsockopt (7, 6, 6, {200}, 4): Ungültiges Argument", aber nirgendwo im Internet konnte ich den Maximalwert für dieses Argument finden, denke ich Mir muss hier etwas sehr Offensichtliches fehlen. Wenn Sie mehr mit den Argumenten experimentieren, ändert sich der Timeout-Wert von 5 Minuten nie. Das Festlegen eines niedrigeren Werts für keepcnt und eines höheren Werts für keepintvl wird akzeptiert, hat jedoch einfach keine sichtbaren Auswirkungen.
socat -d -d -d -v pty,link=/tmp/lp1 tcp:192.168.0.5:9100,reuseaddr,keepalive,keepidle=10,keepintvl=10,keepcnt=100
2017/05/31 08:53:01 socat [16065] I Dieses Produkt enthält Software, die vom OpenSSL-Projekt zur Verwendung im OpenSSL-Toolkit entwickelt wurde. (http://www.openssl.org/) 2017/05/31 08:53:01 socat [16065] I Dieses Produkt enthält Software von Tim Hudson ([email protected]) 2017/05/31 08:53:01 socat [16065] Ich setze die Option "symbolic-link" auf "/ tmp / lp1". 2017/05/31 08:53:01 socat [16065] Ich öffne ({5}, {6}, {"/ dev / pts / 1"} ,,) -> 0 2017/05/31 08:53:01 socat [16065] N PTY ist / dev / pts / 1 2017/05/31 08:53:01 socat [16065] Ich setze die Option "so-keepalive" auf 1 2017/05/31 08:53:01 socat [16065] Ich setze die Option "tcp-keepidle" auf 10 2017/05/31 08:53:01 socat [16065] Ich setze die Option "tcp-keepintvl" auf 10 2017/05/31 08:53:01 socat [16065] Ich setze die Option "tcp-keepcnt" auf 100 2017/05/31 08:53:01 socat [16065] N Verbindungsverbindung zu AF = 2 192.168.0.5:9100 2017/05/31 08:53:01 socat [16065] Ich starte die Verbindungsschleife 2017/05/31 08:53:01 socat [16065] I Socket (2, 1, 6) -> 7 2017/05/31 08:53:01 socat [16065] N erfolgreich von der lokalen Adresse AF = 2 192.168.0.4:56482 verbunden 2017/05/31 08:53:01 socat [16065] Ich habe alle Sockenadressen aufgelöst und geöffnet 2017/05/31 08:53:01 socat [16065] N Starten der Datenübertragungsschleife mit FDs [5,5] und [7,7] 2017/05/31 08:58:01 socat [16065] N-Buchse 2 (fd 7) ist bei EOF 2017/05/31 08:58:02 socat [16065] Zeitüberschreitung bei der Umfrage (keine Daten innerhalb von 0,500000 Sekunden) 2017/05/31 08:58:02 socat [16065] Ich schließe (5) 2017/05/31 08:58:02 socat [16065] Ich habe heruntergefahren (7, 2) 2017/05/31 08:58:02 socat [16065] N wird mit dem Status 0 beendet
quelle
Antworten:
Aus der socat-Manpage für
-t<timeout>
:Versuchen Sie, die
ignoreeof
Option hinzuzufügen .quelle
Wenn Sie mit einem Befehl LISTEN wie
OPENSSL-LISTEN
,TCP-LISTEN
etc., diefork
wird Option Verbindungen zu einem untergeordneten Prozess ausgliedern , so dass socat Empfang fortgesetzt werden kann.Beispiel:
Vielen Dank an: /unix//a/283289/15954
quelle