Làm thế nào để giữ cho socat sống bằng cách sử dụng tùy chọn keepalive


10

Tôi có lệnh socat này đang chạy tốt, nhưng khi không có dữ liệu nào được chuyển, nó sẽ chết sau đúng 5 phút và tôi không hiểu tại sao khi tôi thiết lập nó để gửi 100 lần giữ sau mỗi 10 giây sau 10 giây đầu tiên . Từ những gì tôi hiểu về trang người đàn ông xã hội, điều đó sẽ giữ cho nó tồn tại trong 1000 giây tức là 16 phút. Ngoài ra, nếu tôi cố gắng đặt keepcnt thành 200, tôi nhận được "setsockopt (7, 6, 6, {200}, 4): Đối số không hợp lệ" nhưng tôi không thể tìm thấy giá trị tối đa cho đối số đó là gì Tôi phải thiếu một cái gì đó rất rõ ràng ở đây. Thử nghiệm nhiều hơn với các đối số không bao giờ thay đổi giá trị thời gian chờ là 5 triệu. Đặt giá trị thấp hơn cho keepcnt và giá trị cao hơn của keepintvl được chấp nhận nhưng đơn giản là không có hiệu ứng rõ ràng.

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 Sản phẩm này bao gồm phần mềm được phát triển bởi Dự án OpenSSL để sử dụng trong Bộ công cụ OpenSSL. (http://www.openssl.org/)
2017/05/31 08:53:01 socat [16065] I Sản phẩm này bao gồm phần mềm được viết bởi Tim Hudson (tjh@cryptsoft.com)
2017/05/31 08:53:01 socat [16065] Tôi đặt tùy chọn "liên kết tượng trưng" thành "/ tmp / lp1"
2017/05/31 08:53:01 socat [16065] Tôi cởi mở ({5}, {6}, {"/ dev / pts / 1"} ,,) -> 0
2017/05/31 08:53:01 socat [16065] N PTY ​​là / dev / pts / 1
2017/05/31 08:53:01 socat [16065] Tôi đặt tùy chọn "soalive" thành 1
2017/05/31 08:53:01 socat [16065] Tôi đặt tùy chọn "tcp-keepidle" thành 10
2017/05/31 08:53:01 socat [16065] Tôi đặt tùy chọn "tcp-keepintvl" thành 10
2017/05/31 08:53:01 socat [16065] Tôi đặt tùy chọn "tcp-keepcnt" thành 100
2017/05/31 08:53:01 socat [16065] N mở kết nối tới AF = 2 192.168.0.5:9100
2017/05/31 08:53:01 socat [16065] Tôi bắt đầu kết nối vòng lặp
2017/05/31 08:53:01 socat [16065] Tôi ổ cắm (2, 1, 6) -> 7
2017/05/31 08:53:01 socat [16065] N được kết nối thành công từ địa chỉ địa phương AF = 2 192.168.0.4:56482
2017/05/31 08:53:01 socat [16065] Tôi đã giải quyết và mở tất cả các địa chỉ sock
2017/05/31 08:53:01 socat [16065] N bắt đầu vòng lặp truyền dữ liệu với FD [5,5] và [7,7]
2017/05/31 08:58:01 socat [16065] N socket 2 (fd 7) đang ở EOF
2017/05/31 08:58:02 socat [16065] Tôi đã hết thời gian thăm dò ý kiến ​​(không có dữ liệu trong vòng 0,500000 giây)
2017/05/31 08:58:02 socat [16065] Tôi đóng (5)
2017/05/31 08:58:02 socat [16065] Tôi tắt máy (7, 2)
2017/05/31 08:58:02 socat [16065] N thoát với trạng thái 0

Một số bộ định tuyến NAT bị ngắt kết nối sau một thời gian cụ thể thay vì hoạt động
Ferrybig

Câu trả lời:


5

Từ trang xã hội cho -t<timeout>:

Khi một kênh đã đạt EOF, phần ghi của kênh khác sẽ bị tắt.

Hãy thử thêm ignoreeoftùy chọn.


0

Nếu bạn đang sử dụng lệnh LISTEN như OPENSSL-LISTEN, TCP-LISTENv.v., forktùy chọn sẽ ngắt kết nối với tiến trình con để socat có thể tiếp tục nhận.

Thí dụ:

socat - OPENSSL-LISTEN:443,method=TLS1.2,verify=0,cert=cert.pem,key=key.pem,fork

Cảm ơn: /unix//a/283289/15954

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.