如何在java中获取HttpURLConnection使用的套接字

如何在java中获取HttpURLConnection使用的套接字,java,sockets,httpconnection,Java,Sockets,Httpconnection,HttpURLConnection内部使用一个套接字来发送数据。 我知道现在可以从外部看到它,但我想知道是否有任何解决方法可以让我访问这个套接字(而不改变HttpURLConnection的实现)? 我需要这个黑客做一些仪器 非常感谢。套接字是由创建的。您可以编写自己的SocketFactory,委托给原始的SocketFactory。在套接字工厂中,可以操作套接字。这是我能想到的一种让您访问套接字的方法,但我要提前警告您,这不会很好。您真正想做的是什么?也就是说,如果你真的可以得到这个套接字,

HttpURLConnection内部使用一个套接字来发送数据。 我知道现在可以从外部看到它,但我想知道是否有任何解决方法可以让我访问这个套接字(而不改变HttpURLConnection的实现)? 我需要这个黑客做一些仪器


非常感谢。

套接字是由创建的。您可以编写自己的SocketFactory,委托给原始的SocketFactory。在套接字工厂中,可以操作套接字。这是我能想到的一种让您访问套接字的方法,但我要提前警告您,这不会很好。

您真正想做的是什么?也就是说,如果你真的可以得到这个套接字,你会尝试什么“黑客做一些检测”。我有一些想法,但在回复之前我需要了解更多。@selbie我需要调用setsockopt或ioctl在该套接字上设置一些自定义标志(tos字段等)。最终,我需要在交换机中识别通过该套接字发送的数据包。谢谢。如果我编写自己的套接字工厂,我的所有应用程序的网络相关活动都会使用该工厂,还是我可以指定一个(或两个)连接来使用该工厂?另外,如果我可以在运行时更改套接字的标志,而不仅仅是在创建时更改,那将是最好的。这可能吗?套接字工厂是JVM范围的(更准确地说,是类加载器范围的)。所有套接字请求都将通过套接字工厂处理。但是,如果将套接字工厂设计为包装器,则可以将所有“不感兴趣”的套接字创建委托给默认的套接字工厂,并且只处理您真正感兴趣的套接字工厂。他如何注册SocketFactory的实现?我将尝试使用反射来获取httpconnection的运行时类实例,然后使用jni访问其受保护/私有字段。我会让你们知道结果的。