Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > java proxy server problem

Reply
Thread Tools

java proxy server problem

 
 
mcheung63@gmail.com
Guest
Posts: n/a
 
      05-24-2013
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 ((E-Mail Removed))


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) {
}
}
}
}
}
 
Reply With Quote
 
 
 
 
Arne Vajhj
Guest
Posts: n/a
 
      05-25-2013
On 5/24/2013 7:12 AM, http://www.velocityreviews.com/forums/(E-Mail Removed) 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


 
Reply With Quote
 
 
 
 
Peter Cheung
Guest
Posts: n/a
 
      05-27-2013
Arne Vajhøj於 2013年5月25日星期*UTC+8上午10時01分46 寫道:
> On 5/24/2013 7:12 AM, (E-Mail Removed) 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
 
Reply With Quote
 
Michal Kleczek
Guest
Posts: n/a
 
      05-27-2013
On 2013-05-24 13:12, (E-Mail Removed) 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
 
Reply With Quote
 
Arne Vajhøj
Guest
Posts: n/a
 
      05-27-2013
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, (E-Mail Removed) 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




 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Proxy pattern and java.lang.reflect.Proxy/InvocationHandler Karsten Wutzke Java 1 08-20-2007 11:05 AM
Problem with Proxy Server Code in Java roassaf@gmail.com Java 3 03-22-2007 09:55 AM
Inbound Proxy and Outbound Proxy chellappa VOIP 0 04-07-2006 10:58 AM
Press Release: Scalable SIP Proxy and RTP Media Proxy for NAT traversal sales@lanscapecorp.com VOIP 1 01-23-2006 06:32 PM
Help to set up tomcat 4.1.27 behind socks proxy to access database outside the proxy vidy5300 Java 0 06-07-2004 02:23 PM



Advertisments