我想开发一个程序,而不是语言特定的程序,可以将任何连接重定向到另一个连接,如代理服务器,但是用于所有连接。这种语言并不重要,但有没有办法在不修改原始Windows apis等的情况下执行此操作?我将在java中尝试这个,但我可以用JNI导入C和C ++代码。还有,mac / linux怎么样?
答案 0 :(得分:2)
您当然应该使用TCP / UDP拼接进行考虑/评估。它是一种众所周知的构建代理机制,在将数据从一个连接复制到另一个连接方面相当有效。
答案 1 :(得分:0)
Java是尝试执行此操作的错误语言。即使可以(例如在Windows上),也需要使用外部实用程序或使用本机库调用来完成实际工作。
尝试为多个操作系统执行此操作会使这更加困难。实施机制必然会有所不同。
我不知道你将如何在Windows中执行此操作,但在现代Linux系统上,您可以使用“iptables”来启用和配置OS内核中的网络数据包处理。这需要root权限,很好地理解网络协议的方式,并且关心...因为很容易将网络“砖块化”到您需要控制台级别访问恢复的程度。
(如果您使用的是OS级别的虚拟化,它可能会变得特别复杂......)
FWIW - 可以在Mac OS / X上安装和使用“iptables”端口...认为它显然不受Apple支持。
另一方面,如果您只是尝试让Java应用程序通过某种代理指示所有自己的传出网络连接,那么您应该可以通过配置自定义SocketFactory
实施。