2013-09-02 2 views
0

Я создал небольшой веб-сервер, который принимает запросы. Проблема в том, что если я открою ее в своем браузере, мое приложение покажет, что получено 4 запроса. Почему 4, а не только 1?Java Socket несколько запросов

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(); 
     } 
    } 
+0

Это зависит от того, что делает браузер. Скорее всего, он просит разные страницы кэшировать информацию, например, как используется веб-сервер. Разве HTML не должен содержать раздел BODY? –

+0

Не могли бы вы показать декларацию 'out'? – mike

+0

Терминатор строки в HTTP - это '\ r \ n', не всякая платформа, которая служит для' println() '. – EJP

ответ

0

Похоже, что это были мои браузеры (Chrome). Если я пришлю запрос от eclipse, он появится только один раз.

0

Я бы порекомендовал вам использовать while только для приема клиентов. Создайте новую тему, где будете обрабатывать все, что связано с Socket remote.

Нить также должна иметь петлю while, где она считывается с remote с InputStream и не закрывает розетку сразу после ее создания. Затем вы можете увидеть, что именно отправляет ваш браузер.

Потому что так оно и есть прямо сейчас. Вы закрываете сокет в браузере сразу после создания.

Смежные вопросы