Tengo este comando socat que funciona bien, pero cuando no se transfieren datos, muere después de exactamente 5 minutos y no entiendo por qué, ya que lo configuré para enviar 100 keepalive cada 10 segundos después de los primeros 10 segundos . Por lo que entendí de la página de manual de socat, eso debería mantenerlo vivo durante 1000, que son 16 minutos. Además, si trato de establecer keepcnt en 200, obtengo "setsockopt (7, 6, 6, {200}, 4): argumento inválido" pero en ninguna parte de Internet podría encontrar cuál es el valor máximo para ese argumento, así que creo Debo estar perdiendo algo muy obvio aquí. Experimentar más con los argumentos nunca cambió el valor de tiempo de espera de 5mn. Se acepta establecer valores más bajos para keepcnt y valores más altos para keepintvl, pero simplemente no tiene ningún efecto 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 Este producto incluye software desarrollado por OpenSSL Project para su uso en OpenSSL Toolkit. (http://www.openssl.org/) 31/05/2017 08:53:01 socat [16065] I Este producto incluye software escrito por Tim Hudson ([email protected]) 31/05/2017 08:53:01 socat [16065] I configurando la opción "enlace simbólico" a "/ tmp / lp1" 31/05/2017 08:53:01 socat [16065] I openpty ({5}, {6}, {"/ dev / pts / 1"} ,,) -> 0 31/05/2017 08:53:01 socat [16065] N PTY es / dev / pts / 1 31/05/2017 08:53:01 socat [16065] Establezco la opción "so-keepalive" en 1 31/05/2017 08:53:01 socat [16065] Establezco la opción "tcp-keepidle" en 10 31/05/2017 08:53:01 socat [16065] Establezco la opción "tcp-keepintvl" en 10 31/05/2017 08:53:01 socat [16065] Establezco la opción "tcp-keepcnt" en 100 31/05/2017 08:53:01 socat [16065] N abriendo conexión a AF = 2 192.168.0.5:9100 31/05/2017 08:53:01 socat [16065] Comienzo el bucle de conexión 31/05/2017 08:53:01 socat [16065] I socket (2, 1, 6) -> 7 31/05/2017 08:53:01 socat [16065] N conectado correctamente desde la dirección local AF = 2 192.168.0.4:56482 31/05/2017 08:53:01 socat [16065] Resolví y abrí todas las direcciones de calcetines 31/05/2017 08:53:01 socat [16065] N bucle de transferencia de datos de inicio con FDs [5,5] y [7,7] 31/05/2017 08:58:01 socat [16065] N socket 2 (fd 7) está en EOF 31/05/2017 08:58:02 socat [16065] Tiempo de espera de la encuesta (sin datos en 0.500000 segundos) 31/05/2017 08:58:02 socat [16065] Cierro (5) 31/05/2017 08:58:02 socat [16065] Apago (7, 2) 31/05/2017 08:58:02 socat [16065] N saliendo con estado 0
fuente
Respuestas:
De la página de manual de socat para
-t<timeout>
:Intenta agregar la
ignoreeof
opción.fuente
Si está utilizando un comando LISTEN como
OPENSSL-LISTEN
,TCP-LISTEN
etc., lafork
opción desconectará las conexiones a un proceso secundario para que socat pueda continuar recibiendo.Ejemplo:
Gracias a: /unix//a/283289/15954
fuente