使用中间主机建立TCP套接字连接

时间:2012-02-22 15:49:13

标签: sockets tcp network-programming

我需要在Java中的两个主机(比如host1和host2)之间建立一个Socket连接(TCP)。但看起来我因为防火墙而无法做到这一点。虽然有第三个主机(比如host3)可以从host1和host2访问,但我认为可以用作此连接的中间件。

基本上,我想从host1(客户端)向host3发送请求,host3将我的请求重定向到host2(服务器)。

您能否告诉我如何实现这一目标?

提前致谢!

1 个答案:

答案 0 :(得分:3)

您可以使用

建立SSH隧道
ssh host3 -L4321:host2:6523

然后从端口4321上的host1连接到host3。这实际上被重定向到host2上的端口6523.


类似的选项可能是让ssh提供SOCKS服务器。

ssh host3 -D 6543

然后使用curl代替wget

然后你可以做

curl http://host2/foo/bar --socks4 localhost:6543

(未经测试,--socks4a--socks5也可以作为选项......)

ssh命令在本地创建一个SOCKS服务器,该服务器将连接尝试隧道传送到ssh服务器,然后ssh服务器执行它们。