Java “a”怎么说;“代理服务器”;工作

Java “a”怎么说;“代理服务器”;工作,java,sockets,proxy,Java,Sockets,Proxy,我正在尝试实现一个简单的ProxyServer来分析连接设备和外部世界之间的traffix 例如,iPhone被配置为使用192.168.1.10:8080的代理 我的代理服务器(在192.168.1.10上)将监听端口8080 iPhone试图连接到代理服务器(端口8080),或者向代理服务器发送请求,代理服务器应该通过端口80与google.com联系,并通过post 21与somehost联系 所以我想应该是这样的: //Accept incoming ServerS

我正在尝试实现一个简单的ProxyServer来分析连接设备和外部世界之间的traffix

  • 例如,iPhone被配置为使用192.168.1.10:8080的代理
  • 我的代理服务器(在192.168.1.10上)将监听端口8080
  • iPhone试图连接到代理服务器(端口8080),或者向代理服务器发送请求,代理服务器应该通过端口80与google.com联系,并通过post 21与somehost联系
所以我想应该是这样的:

    //Accept incoming 
    ServerSocket serverSocket = new ServerSocket(8080);
    Socket socket = serverSocket.accept();
    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

    //Log incoming requests

    //Send to remote server on behalf of my device
    Socket remote = new Socket(remoteHost, remotePort);
    //forward the same data to remote client..

    //wait for the reply

    //send to my device
如何知道将请求转发到的远程端口/主机

我错过了什么

多谢各位


我想您会发现构建代理服务器实际上并不简单。我以前也做过,我想先了解一下它的逻辑。代理如何知道转发到哪里?是否在所有转发信息之上都有一个protocoll?当我在iPhone上设置代理时,它将
目标端口
信息放在哪里?如何编写它取决于您想要它做什么。如果它只是一个真正的代理,那么它本身就是简单的:只需读取请求,形成连接,然后开始复制字节。但是如果你想分析流量,那是另一回事。请提供进一步的信息,并发送到哪个地址?实际上,我想在转发到他们的实际目的地之前拦截并阅读正在发生的事情。