2011-12-04 34 views
8

Tôi có một yêu cầu đơn giản về chuyển tiếp cổng/đường hầm cấp phần mềm của giao tiếp dựa trên socket.Chuyển tiếp cổng

  • Tôi có máy chủ nguồn và cổng bằng Sockets. Đây là một chương trình java hoạt động cả trong windows và linux và điều này không liên quan.
  • Tôi có các thiết bị tiếp tục gửi dữ liệu đến cổng này. Có thể có liên lạc hai chiều
  • Tôi muốn chuyển hướng dữ liệu này đến một máy chủ và cổng từ xa khác. Vì vậy, đối với khách hàng, họ sẽ không phải lo lắng về việc thay đổi địa chỉ IP bất cứ khi nào tôi di chuyển máy chủ ứng dụng của mình.

Có chương trình công cụ/deamon/dịch vụ nào tôi có thể sử dụng để định cấu hình và thực hiện việc này không?

Tôi đã thử SSH, nhưng theo hiểu biết của tôi, điều này cần có máy chủ hỗ trợ giao thức SSH. Trong trường hợp của tôi, điều này không áp dụng được. Tôi cũng đã thử sử dụng JSch nhưng điều này một lần nữa là một thực hiện SSH trong định dạng java.

Ai đó có thể ném một số con trỏ không? Có thể sử dụng iptables NAT trong linux không?

+0

Bạn có đang sử dụng bất kỳ giao thức chuẩn nào hoặc giao thức tùy chỉnh của riêng bạn không? – Santosh

+0

Nó chỉ là một giao tiếp dữ liệu TCP/IP. – Muthu

Trả lời

4

Bạn có thể thử netcat hoặc socat (đó là mạnh mẽ hơn netcat)

Một ví dụ cho socat để chuyển tiếp cổng 80 sử dụng tcp4:

socat tcp4-listen:80,fork tcp4:{another server}:{another port} 

và tham khảo http://en.wikipedia.org/wiki/Netcat#Port_Forwarding_or_Port_Mapping cho netcat

Cả không liên quan đến java.

+0

Wow! Làm sao tôi quên được điều này !! Tôi có một câu hỏi mặc dù! Socat hoặc netcat có thể tự động kết nối lại nếu kết nối bị hỏng không? – Muthu

+0

Tôi không biết nếu có một tùy chọn tích hợp để kết nối lại, nhưng nó có thể là công việc của khách hàng để kết nối lại nếu bất cứ điều gì sai –

+0

Điều này nói rằng "2011/12/04 15:52:25 socat [4328] E kết nối (3 , AF = 2 ipaddress: 5000, 16): Địa chỉ đã được sử dụng ". Tôi đã thử lệnh với tùy chọn reuseaddr cũng. – Muthu

2

Có tiện ích chuyển tiếp cổng TCP/IP có tên portforward có sẵn trong code.google.com. Nó được viết hoàn toàn bằng Java.

+0

Sẽ cung cấp cho một thử & xác nhận nếu điều này sẽ phù hợp. – Muthu

Các vấn đề liên quan