Принятие сокета в Windows 7 берет больше, чем секунда

Вот то, что я сделал:

  • Я записал минимальный веб-сервер (использующий QT, но я не думаю, что это релевантно здесь).
  • Я выполняю его в легальном 32-разрядном Windows 7.

Проблема:

  • Если я выполняю запрос с Firefox, IE, Chrome или Safari, он берет, берет приблизительно за одну секунду до того, как мой сервер видит, что существует новое соединение, которое будет принято.

Подсказки:

  • Используя другие клиенты (wget, владейте тестовым клиентом, который просто открывает сокет), чем Firefox, IE, Chrome, Safari, видя, что новое соединение является вопросом миллисекунд.
  • Я установил Apache и судил клиенты, упомянул выше. Обслуживание запроса берет ~50ms как ожидалось.
  • Проблема не восстанавливаема при выполнении Windows XP (или компиляции и выполнении того же кода в соответствии с Linux)
  • Проблема, кажется, представляет себя только при соединении с localhost. Друг, соединенный по Интернету и обслуживанию соединения, был вопросом миллисекунд.
  • Выполнение сервера в различных портах не имеет никакого эффекта на 1 вторую задержку

Вот то, что я попробовал без удачи:

  • Остановленный сервис Windows Defender
  • Остановленный сервис Windows Firewall

Какие-либо идеи? Это некоторое умное 'средство защиты' в Windows 7? Почему Apache не затронут? Почему только браузеры затронуты?

5
задан eburger 30 December 2009 в 18:49
поделиться

3 ответа

Если вы говорите "localhost" вместо "127.0.0.1", вы заставляете искать имя перед фактической попыткой соединения, добавляя задержку.

Кроме того, некоторые браузеры, такие как Firefox 3.5+, не используют механизм DNS поиска операционной системы, поэтому он может иметь другую производительность, чем, скажем, wget.

.
3
ответ дан 13 December 2019 в 19:28
поделиться

Возможно, вы столкнулись с проблемой автоматического обнаружения прокси. В Firefox, вы можете отключить это в Настройках | Дополнительно | Сеть | Настройки; выберите "Нет прокси" или дайте ему явные значения. Есть также панель управления Internet Properties, которая является сетевыми настройками IE, но другие браузеры в Windows тоже могут подчиняться настройкам здесь. Опять же, отключите автопрокси-обнаружение. Это может ускорить соединения и за пределами локального хоста.

3
ответ дан 13 December 2019 в 19:28
поделиться

По какой-то причине Windows 7 требуется 1 секунда для разрешения адреса localhost независимо от того, находится ли он в файле hosts.

Добавление localhost1 в файл hosts и его использование позволяет обойти проблему.

4
ответ дан 13 December 2019 в 19:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: