2012-02-18 31 views
5

Tôi đang sử dụng một lệnh socat để tạo ra một giao diện tty trên thiết bị linux nhúng của tôi như:Reconnect socat kết nối sau khi thất bại mạng

socat pty,link=/dev/ttyS9 TCP:10.0.10.1:9999 

Kết nối là một connecstion đường dài hơn một dsl-line. Dòng này bị ngắt kết nối mỗi đêm và giao diện tty của tôi bị hỏng. Có thể tạo ra các interty tty với một cơ chế để kết nối lại cho đến khi phía máy chủ trực tuyến một lần nữa?

Câu hỏi tiếp theo: có thể gọi lệnh socat từ một chương trình java không?

Cảm ơn rất nhiều! Karl-Heinz

Trả lời

1

Tính năng phiên bản V 1.4.0.0 có các tùy chọn "thử lại", "mãi mãi" và "khoảng thời gian".

Vì vậy, điều này sẽ cung cấp cho bạn những hành vi mong muốn:

socat pty,link=/dev/ttyS9 tcp:10.0.10.1:9999,forever,interval=10,fork 
+0

chỉ này hoạt động trên kết nối đầu tiên. Nếu kết nối được đóng, nó sẽ không kết nối lại. – lethalman

+0

@lethalman Bạn có muốn giải thích về thiết lập của mình không? Bạn có sử dụng 'socat' trên cả hai đầu? Bạn đã đặt tùy chọn 'mãi mãi 'ở cả hai đầu? – FloHimself

+1

'socat - tcp: foo, forever' sẽ cố gắng kết nối lại mãi mãi nếu kết nối đầu tiên không thành công. Nhưng sau khi kết nối được thiết lập, socat sẽ bỏ thuốc lá nếu điểm cuối ngắt kết nối. – lethalman

1

Socat được thiết kế để thoát ra khi một kết nối đóng cửa.

Cách giải quyết: đặt một vòng lặp vô hạn xung quanh socat của bạn bắt đầu

while true 
    do 
     socat addr1 addr2 
     sleep 1 
    done 
Các vấn đề liên quan