编写java.net.SocketImplFactory

Dol*_*000 8 java sockets

SocketImplFactory的javadoc特别提到"通过更改创建套接字实现的套接字工厂,应用程序可以自行配置以创建适合本地防火墙的套接字."

但是,为了连接到有问题的防火墙,需要一个真正的套接字来进行真正的连接.替换了默认的SocketImplFactory,如何获得真正的套接字?

我知道在Java的Java上可以使用java.net.PlainSocketImpl和java.net.SocksSocketImpl,但有没有什么方法可以在JVM之间移植?

Ano*_*on. 0

您在调用之前创建套接字以连接到防火墙setSocketImplFactory

  • 然而,如果需要有多个到防火墙的连接,就像 SOCKS 的情况一样(每个隧道连接需要一个到防火墙的 TCP 连接),那么这种方法就行不通了。确实可以在设置工厂之前创建一个 java.net.Socket,然后从中提取默认的 SocketImpl 类,并在将来使用反射来实例化更多此类。它显然会被归类为黑客攻击,但它似乎有合理的机会在虚拟机之间移植。 (2认同)