Saya memiliki perintah socat ini yang berjalan dengan baik, tetapi ketika tidak ada data yang ditransfer, ia mati setelah tepat 5 menit dan saya tidak mengerti mengapa karena saya telah mengaturnya untuk mengirim 100 keepalive setiap 10 detik setelah 10 detik pertama . Dari apa yang saya pahami dari halaman manual socat, itu harus tetap hidup selama 1000-an yaitu 16 menit. Juga, jika saya mencoba untuk menetapkan keepcnt menjadi 200, saya mendapatkan "setsockopt (7, 6, 6, {200}, 4): Argumen tidak valid" tetapi di internet saya tidak dapat menemukan apa nilai maksimum untuk argumen itu jadi saya pikir Saya pasti kehilangan sesuatu yang sangat jelas di sini. Bereksperimen lebih banyak dengan argumen tidak pernah mengubah nilai batas waktu 5jt. Pengaturan nilai yang lebih rendah untuk keepcnt dan nilai yang lebih tinggi dari keepintvl diterima tetapi tidak memiliki efek yang terlihat.
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 Produk ini termasuk perangkat lunak yang dikembangkan oleh Proyek OpenSSL untuk digunakan dalam OpenSSL Toolkit. (http://www.openssl.org/) 2017/05/31 08:53:01 socat [16065] I Produk ini termasuk perangkat lunak yang ditulis oleh Tim Hudson ([email protected]) 2017/05/31 08:53:01 socat [16065] Saya mengatur opsi "symbolic-link" ke "/ tmp / lp1" 2017/05/31 08:53:01 socat [16065] Saya openpty ({5}, {6}, {"/ dev / pts / 1"} ,,) -> 0 2017/05/31 08:53:01 socat [16065] N PTY adalah / dev / pts / 1 2017/05/31 08:53:01 socat [16065] Saya mengatur opsi "so-keepalive" ke 1 2017/05/31 08:53:01 socat [16065] Saya mengatur opsi "tcp-keepidle" ke 10 2017/05/31 08:53:01 socat [16065] Saya mengatur opsi "tcp-keepintvl" ke 10 2017/05/31 08:53:01 socat [16065] Saya mengatur opsi "tcp-keepcnt" ke 100 2017/05/31 08:53:01 socat [16065] N membuka koneksi ke AF = 2 192.168.0.5:9100 2017/05/31 08:53:01 socat [16065] Saya mulai menghubungkan loop 2017/05/31 08:53:01 socat [16065] I socket (2, 1, 6) -> 7 2017/05/31 08:53:01 socat [16065] N berhasil terhubung dari alamat lokal AF = 2 192.168.0.4:56482 2017/05/31 08:53:01 socat [16065] Saya menyelesaikan dan membuka semua alamat kaus kaki 2017/05/31 08:53:01 socat [16065] N memulai loop transfer data dengan FD [5,5] dan [7,7] 2017/05/31 08:58:01 socat [16065] N socket 2 (fd 7) ada di EOF 2017/05/31 08:58:02 socat [16065] Jajak pendapat saya habis waktu (tidak ada data dalam 0,500000 detik) 2017/05/31 08:58:02 socat [16065] Saya tutup (5) 2017/05/31 08:58:02 socat [16065] I shutdown (7, 2) 2017/05/31 08:58:02 socat [16065] N keluar dengan status 0
sumber
Jawaban:
Dari halaman socat untuk
-t<timeout>
:Coba tambahkan
ignoreeof
opsi.sumber
Jika Anda menggunakan perintah LISTEN seperti
OPENSSL-LISTEN
,,TCP-LISTEN
dll.,fork
Opsi akan memutus koneksi ke proses anak sehingga socat dapat terus menerima.Contoh:
Terima kasih kepada: /unix//a/283289/15954
sumber