Witam!
Piszę serwer proxy i mam pewnien problem.
Mam taki kod:
...
InetAddress addr = InetAddress.getByName(host);
int port = 80;
SocketAddress sockaddr = new InetSocketAddress(addr, port);
Socket proxyToWWW = new Socket();
int timeoutMs = 2000;
proxyToWWW.connect(sockaddr, timeoutMs);
OutputStream serverOut = new BufferedOutputStream(proxyToWWW.getOutputStream());
// clientIn -> serverOut
String input = slurp(clientIn);
System.out.println(input);
serverOut.write(input.getBytes());
serverOut.flush();
BufferedReader serverIn = new BufferedReader(new InputStreamReader(
proxyToWWW.getInputStream()));
String fromServer;
while ((fromServer = serverIn.readLine()) != null) {
System.out.println("Server: " + fromServer); //TUTAJ!
}
...
Funkcja slurp():
private String slurp (InputStream in) throws IOException {
System.out.println("START slurp");
StringBuffer out = new StringBuffer();
byte[] b = new byte[4096];
for (int n; (n = in.read(b)) != -1;) {
out.append(new String(b, 0, n));
}
System.out.println("END slurp");
return out.toString();
}
Kiedy przeglądarka łączy się z moim serwerem proxy to wczytuje stronę w nieskończoność. Dopiero kiedy w przeglądarce wcisnę przycisk "stop" to kod "rusza dalej" i pobiera dane z www i wypisuje je na konsoli (w miejscu które oznaczyłem komentarzem TUTAJ!).
Problem prawdopodobnie polega na tym, że dopóki w przeglądarce nie wcisnę "stop" to program jest zatrzymany w funkcji slurp() w miejscu in.read(b).
Proszę o podpowiedź co może być źle.