Java Socket несколько запросов
Я построил небольшой веб-сервер, который принимает запросы. Проблема в том, что если я открою его в своем браузере, мое приложение покажет, что было получено 4 запроса. Почему 4, а не только 1?
while (true) {
try {
Socket remote = s.accept();
String sendersIP = remote.getInetAddress().toString();
log.add(sendersIP);
System.out.println("Got new Request");
out.println("HTTP/1.0 200 OK");
out.println("Content-Type: text/html");
out.println("Server: Bot");
out.println("");
out.println("<H1>Welcome</H1>");
out.flush();
remote.close();
} catch (Exception e) {
e.printStackTrace();
}
}
2 ответа
Решение
Похоже, что это была ошибка моего браузера (Chrome)... Если я отправляю запрос из Eclipse, он появляется только один раз.
Я бы порекомендовал вам использовать while
только для приема клиентов. Создайте новый поток, где вы обрабатываете все, что связано с Socket remote
,
Поток также должен иметь цикл while, где он читает из remote
s InputStream
и не закрывайте сокет сразу после создания. Затем вы можете увидеть, что именно отправляет ваш браузер.
Потому что так оно и есть сейчас. Вы закрываете сокет для браузера сразу после создания.