R
roassaf
Hi,
I am trying to write a very simple Proxy Server.
When I run the code below (it's only the main part of the code.
Everything compiles)
I have a problem that the read of input stream seem to hang.
I marked the problematic line.
(while ((bytesRead = istream.read(response)) >= 0))
It never prints "inside loop" and after a few checks I found out that
the read is the problem.
Can anyone see a problem in the code?
Thanks for you help
The code:
Integer port = new Integer(_props.getProperty("proxy.port"));
ServerSocket serverSocket = new
ServerSocket(port.intValue());
Socket socket = null;
String fullRequest = "";
while(true) {
socket = serverSocket.accept();
InputStream istream = socket.getInputStream();
OutputStream ostream = socket.getOutputStream();
StringBuffer headers = new StringBuffer();
int byteRead = 0;
while (!endOfHeaders(headers) && (byteRead =
istream.read()) >= 0) {
headers.append((char) byteRead);
}
HttpRequestHeader header = new
HttpRequestHeader(headers.toString());
ostream.write(header.asciiGetBytes(false));
int bytesRead = -1;
byte[] response = new byte[4096];
System.out.println("Before loop");
//Hangs on the read right below.
The problem----->>>>> while ((bytesRead =
istream.read(response)) >= 0) {
System.out.println("Inside loop");
ostream.write(response, 0, bytesRead);
ostream.flush();
System.out.write(response, 0, bytesRead);
}
System.out.println("After loop");
socket.close();
I am trying to write a very simple Proxy Server.
When I run the code below (it's only the main part of the code.
Everything compiles)
I have a problem that the read of input stream seem to hang.
I marked the problematic line.
(while ((bytesRead = istream.read(response)) >= 0))
It never prints "inside loop" and after a few checks I found out that
the read is the problem.
Can anyone see a problem in the code?
Thanks for you help
The code:
Integer port = new Integer(_props.getProperty("proxy.port"));
ServerSocket serverSocket = new
ServerSocket(port.intValue());
Socket socket = null;
String fullRequest = "";
while(true) {
socket = serverSocket.accept();
InputStream istream = socket.getInputStream();
OutputStream ostream = socket.getOutputStream();
StringBuffer headers = new StringBuffer();
int byteRead = 0;
while (!endOfHeaders(headers) && (byteRead =
istream.read()) >= 0) {
headers.append((char) byteRead);
}
HttpRequestHeader header = new
HttpRequestHeader(headers.toString());
ostream.write(header.asciiGetBytes(false));
int bytesRead = -1;
byte[] response = new byte[4096];
System.out.println("Before loop");
//Hangs on the read right below.
The problem----->>>>> while ((bytesRead =
istream.read(response)) >= 0) {
System.out.println("Inside loop");
ostream.write(response, 0, bytesRead);
ostream.flush();
System.out.write(response, 0, bytesRead);
}
System.out.println("After loop");
socket.close();