Java 重定向网络流量

Java 重定向网络流量,java,networking,Java,Networking,我正在尝试重定向一些流量,因此当要求1.1.1.1:2222本地计算机时,改为2.2.2.2:3333 使用java实现这一点最简单的方法是什么 致意 windows上的主机文件不可用!选择权 编辑: IP1.1.1.1:2222是一个扩展ip(一个我不拥有的服务器)。因此,我无法创建一个简单的套接字服务器来重定向流量。我必须改变包的方向 还请注意,这是我要重定向的传出部分。一个简单的例子是,如果我问www.google.dk,我会得到facebook 这必须通过java实现。我认为它可以通过套

我正在尝试重定向一些流量,因此当要求1.1.1.1:2222本地计算机时,改为2.2.2.2:3333

使用java实现这一点最简单的方法是什么

致意

windows上的主机文件不可用!选择权

编辑: IP1.1.1.1:2222是一个扩展ip(一个我不拥有的服务器)。因此,我无法创建一个简单的套接字服务器来重定向流量。我必须改变包的方向

还请注意,这是我要重定向的传出部分。一个简单的例子是,如果我问www.google.dk,我会得到facebook


这必须通过java实现。

我认为它可以通过套接字轻松实现,基本上:

  • 打开1.1.1.1:2222上的服务器套接字
  • 打开插座至2.2.2.2:3333
  • 将第一个的outputStream重定向到第二个的inputstream,反之亦然

  • 你有一个例子,你不能用Java做这种事情。事实上,在用户空间应用程序中通常根本无法做到这一点

    如果您使用的是Linux平台,您可能会配置
    iptables
    ,截获指定类型的发送到特定IP地址/端口的数据包,并重写目标IP地址。然而,这实际上是一个系统/网络管理问题,而不是编程问题

    正如您所想象的,如果一个非特权应用程序可能会导致流量被重新路由,那么您可能会做各种令人讨厌的事情。您需要Linux上的root权限才能更改iptables配置


    这必须从java中完成

    好的,除非您询问应用程序重定向其自己的请求,否则它不能用Java/从Java完成


    (在例外情况下,您可以通过实现一个自定义套接字工厂来实现这一点,该工厂打开连接到不同的位置,以满足更高级别的应用程序代码的要求。但是,我不认为这是您的要求。)

    更新的问题。你似乎不明白我的意思:)尽管谢谢你的尝试;)那你就不能做那样的事了,感谢上帝。你必须在沟通的中间不知何故…想象一下互联网上的混乱,如果你可以重定向你不拥有的服务器的所有流量…你这样做的目的是什么?我认为这个问题与编程无关。您应该调整网络软件,工作取决于具体要求。例如,您的目标IP具有DNS名称?您对特定于协议(如http)的重定向感兴趣吗?如果服务器不在您的控制之下,为什么要指定端口?这是相关的,因为根据您的回复,实际的服务器不属于您,所以您听起来好像在做一些不太可能的事情,甚至可能是非法的,比如钓鱼……根据他的问题,我假设它是在Windows上