J'ai cette commande socat qui fonctionne bien, mais quand aucune donnée n'est transférée, elle meurt après exactement 5 minutes et je ne comprends pas pourquoi, comme je l'ai configurée pour envoyer 100 keepalive toutes les 10 secondes après les 10 premières secondes . D'après ce que j'ai compris de la page de manuel de socat, cela devrait la maintenir en vie pendant des milliers, soit 16 minutes. De plus, si j'essaie de définir keepcnt à 200, j'obtiens "setsockopt (7, 6, 6, {200}, 4): argument non valide", mais nulle part sur Internet ne pourrais-je trouver la valeur maximale de cet argument, donc je pense Je dois manquer quelque chose de très évident ici. Expérimenter davantage avec les arguments n'a jamais changé la valeur de timeout de 5mn. La définition d'une valeur inférieure pour keepcnt et des valeurs supérieures de keepintvl est acceptée mais n'a tout simplement aucun effet visible.
socat -d -d -d -v pty,link=/tmp/lp1 tcp:192.168.0.5:9100,reuseaddr,keepalive,keepidle=10,keepintvl=10,keepcnt=100
31/05/2017 08:53:01 socat [16065] I Ce produit comprend un logiciel développé par le projet OpenSSL pour une utilisation dans la boîte à outils OpenSSL. (http://www.openssl.org/) 31/05/2017 08:53:01 socat [16065] I Ce produit comprend un logiciel écrit par Tim Hudson ([email protected]) 31/05/2017 08:53:01 socat [16065] Je règle l'option "symbolic-link" sur "/ tmp / lp1" 31/05/2017 08:53:01 socat [16065] J'ouvre vide ({5}, {6}, {"/ dev / pts / 1"} ,,) -> 0 31/05/2017 08:53:01 socat [16065] N PTY est / dev / pts / 1 31/05/2017 08:53:01 socat [16065] Je mets l'option "so-keepalive" à 1 31/05/2017 08:53:01 socat [16065] Je mets l'option "tcp-keepidle" à 10 31/05/2017 08:53:01 socat [16065] Je mets l'option "tcp-keepintvl" à 10 31/05/2017 08:53:01 socat [16065] Je mets l'option "tcp-keepcnt" à 100 31/05/2017 08:53:01 socat [16065] Connexion d'ouverture N à AF = 2 192.168.0.5:9100 31/05/2017 08:53:01 socat [16065] Je démarre la boucle de connexion 31/05/2017 08:53:01 socat [16065] Prise I (2, 1, 6) -> 7 31/05/2017 08:53:01 socat [16065] N connecté avec succès depuis l'adresse locale AF = 2 192.168.0.4:56482 31/05/2017 08:53:01 socat [16065] J'ai résolu et ouvert toutes les adresses de chaussettes 31/05/2017 08:53:01 socat [16065] N boucle de transfert de données de départ avec FD [5,5] et [7,7] 31/05/2017 08:58:01 socat [16065] La prise N 2 (fd 7) est à EOF 31/05/2017 08:58:02 socat [16065] Le sondage a expiré (aucune donnée dans les 0.500000 secondes) 31/05/2017 08:58:02 socat [16065] Je ferme (5) 31/05/2017 08:58:02 socat [16065] Je ferme (7, 2) 31/05/2017 08:58:02 socat [16065] N sortant avec le statut 0
la source
Réponses:
De la page de manuel socat pour
-t<timeout>
:Essayez d'ajouter l'
ignoreeof
option.la source
Si vous utilisez une commande comme LISTEN
OPENSSL-LISTEN
,TCP-LISTEN
etc., l'fork
option spin off connexions à un processus enfant afin que socat puisse continuer à recevoir.Exemple:
Merci à: /unix//a/283289/15954
la source