java proxy server problem

Discussion in 'Java' started by mcheung63@gmail.com, May 24, 2013.

  1. Guest

    Dear All
    My proxy server just work in one level forward, That mean vncviewer->my proxy server->vnc server works.
    But for two levels forward, vncviewer->my proxy server->my proxy server > vncserver doesn't work, so why?

    thanks
    from Peter ()


    import java.io.IOException;
    import java.io.InputStream;
    import java.io_OutputStream;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;

    public class SimpleProxyServer {
    public static void main(String[] args) throws IOException {
    try {
    String host = "210.5.164.14";
    int remoteport = 5999;
    int localport = 1234;
    // Print a start-up message
    System.out.println("Starting proxy for " + host + ":" + remoteport + " on port " + localport);
    // And start running the server
    runServer(host, remoteport, localport); // never returns
    } catch (Exception e) {
    System.err.println(e);
    }
    }

    /**
    * runs a single-threaded proxy server on the specified local port. It never
    * returns.
    */
    public static void runServer(String host, int remoteport, int localport) throws IOException {
    // Create a ServerSocket to listen for connections with
    ServerSocket ss = new ServerSocket(localport);

    final byte[] request = new byte[1024];
    byte[] reply = new byte[4096];

    while (true) {
    Socket client = null, server = null;
    try {
    // Wait for a connection on the local port
    client = ss.accept();

    final InputStream streamFromClient = client.getInputStream();
    final OutputStream streamToClient = client.getOutputStream();

    // Make a connection to the real server.
    // If we cannot connect to the server, send an error to the
    // client, disconnect, and continue waiting for connections.
    try {
    server = new Socket(host, remoteport);
    } catch (IOException e) {
    PrintWriter out = new PrintWriter(streamToClient);
    out.print("Proxy server cannot connect to " + host + ":" + remoteport + ":\n" + e + "\n");
    out.flush();
    client.close();
    continue;
    }

    // Get server streams.
    final InputStream streamFromServer = server.getInputStream();
    final OutputStream streamToServer = server.getOutputStream();

    // a thread to read the client's requests and pass them
    // to the server. A separate thread for asynchronous.
    Thread t = new Thread() {
    public void run() {
    int bytesRead;
    try {
    while ((bytesRead = streamFromClient.read(request)) != -1) {
    streamToServer.write(request, 0, bytesRead);
    streamToServer.flush();
    }
    } catch (IOException e) {
    }

    // the client closed the connection to us, so close our
    // connection to the server.
    try {
    streamToServer.close();
    } catch (IOException e) {
    }
    }
    };

    // Start the client-to-server request thread running
    t.start();

    // Read the server's responses
    // and pass them back to the client.
    int bytesRead;
    try {
    while ((bytesRead = streamFromServer.read(reply)) != -1) {
    streamToClient.write(reply, 0, bytesRead);
    streamToClient.flush();
    }
    } catch (IOException e) {
    }

    // The server closed its connection to us, so we close our
    // connection to our client.
    streamToClient.close();
    } catch (IOException e) {
    System.err.println(e);
    } finally {
    try {
    if (server != null)
    server.close();
    if (client != null)
    client.close();
    } catch (IOException e) {
    }
    }
    }
    }
    }
     
    , May 24, 2013
    #1
    1. Advertising

  2. Arne Vajhøj Guest

    On 5/24/2013 7:12 AM, wrote:
    > My proxy server just work in one level forward, That mean vncviewer->my proxy server->vnc server works.
    > But for two levels forward, vncviewer->my proxy server->my proxy server > vncserver doesn't work, so why?


    Could you elaborate on "doesn't work"?

    > } catch (IOException e) {
    > }


    > } catch (IOException e) {
    > }


    > } catch (IOException e) {
    > }


    > } catch (IOException e) {
    > }


    I would suggest printing something in those catch block to help
    troubleshooting.

    Arne
     
    Arne Vajhøj, May 25, 2013
    #2
    1. Advertising

  3. Peter Cheung Guest

    Arne Vajhøjæ–¼ 2013å¹´5月25日星期六UTC+8上åˆ10時01分46秒寫é“:
    > On 5/24/2013 7:12 AM, wrote:
    >
    > > My proxy server just work in one level forward, That mean vncviewer->my proxy server->vnc server works.

    >
    > > But for two levels forward, vncviewer->my proxy server->my proxy server> vncserver doesn't work, so why?

    >
    >
    >
    > Could you elaborate on "doesn't work"?
    >
    >
    >
    > > } catch (IOException e) {

    >
    > > }

    >
    >
    >
    > > } catch (IOException e) {

    >
    > > }

    >
    >
    >
    > > } catch (IOException e) {

    >
    > > }

    >
    >
    >
    > > } catch (IOException e) {

    >
    > > }

    >
    >
    >
    > I would suggest printing something in those catch block to help
    >
    > troubleshooting.
    >
    >
    >
    > Arne


    Hi Arne
    My java proxy server only work in one-level. That mean:

    Program -> proxy -> target server <-- this works
    PProgram -> proxy -> proxy -> target server <-- this doesn't works, two proxy servers
     
    Peter Cheung, May 27, 2013
    #3
  4. On 2013-05-24 13:12, wrote:
    > Dear All
    > My proxy server just work in one level forward, That mean vncviewer->my proxy server->vnc server works.
    > But for two levels forward, vncviewer->my proxy server->my proxy server > vncserver doesn't work, so why?
    >
    > public class SimpleProxyServer {
    > public static void main(String[] args) throws IOException {
    > try {
    > String host = "210.5.164.14";
    > int remoteport = 5999;
    > int localport = 1234;


    I assume your proxies are run on different hosts (so they can both bind
    to port 1234).
    Your first proxy connects to port 5999 and the second listens on port
    1234. They both connect to the target server.

    > // Start the client-to-server request thread running
    > t.start();
    >
    > // Read the server's responses
    > // and pass them back to the client.
    > int bytesRead;
    > try {
    > while ((bytesRead = streamFromServer.read(reply)) != -1) {
    > streamToClient.write(reply, 0, bytesRead);
    > streamToClient.flush();
    > }
    > } catch (IOException e) {
    > }


    Here you are blocking accepting new connections.
    Server-to-client relay should be done in a dedicated thread such as
    client-to-server.

    --
    Michal
     
    Michal Kleczek, May 27, 2013
    #4
  5. On 5/26/2013 11:22 PM, Peter Cheung wrote:
    > Arne Vajhøjæ–¼ 2013å¹´5月25日星期六UTC+8上åˆ10時01分46秒寫é“:
    >> On 5/24/2013 7:12 AM, wrote:
    >>> My proxy server just work in one level forward, That mean vncviewer->my proxy server->vnc server works.
    >>> But for two levels forward, vncviewer->my proxy server->my proxy server > vncserver doesn't work, so why?

    >>
    >> Could you elaborate on "doesn't work"?
    >>
    >>> } catch (IOException e) {
    >>> }

    >>
    >>> } catch (IOException e) {
    >>> }

    >>
    >>> } catch (IOException e) {
    >>> }

    >>
    >>> } catch (IOException e) {
    >>> }

    >>
    >> I would suggest printing something in those catch block to help
    >> troubleshooting.


    > My java proxy server only work in one-level. That mean:
    >
    > Program -> proxy -> target server <-- this works
    > PProgram -> proxy -> proxy -> target server <-- this doesn't works, two proxy servers


    You already wrote that once.

    But what does "doesn't work" really mean.

    Does the PC blowup and destroy the house?

    Do you get an error message?

    Or?

    Arne
     
    Arne Vajhøj, May 27, 2013
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. vidy5300
    Replies:
    0
    Views:
    918
    vidy5300
    Jun 7, 2004
  2. Replies:
    0
    Views:
    1,666
  3. Karsten Wutzke
    Replies:
    1
    Views:
    917
    Steven Simpson
    Aug 20, 2007
  4. Klein Stéphane
    Replies:
    3
    Views:
    621
    Steve Holden
    Dec 20, 2009
  5. Alejandro Molina

    Proxy and non Proxy configurations

    Alejandro Molina, Jul 15, 2004, in forum: ASP .Net Security
    Replies:
    0
    Views:
    164
    Alejandro Molina
    Jul 15, 2004
Loading...

Share This Page