@JustMoose
Программист. Радиолюбитель. Прокрастинатор ;)

Поможете найти 10 отличий между «веб-серверами»?

Всем привет.
Предыстория.
Мне понадобилось написать тесты к одному приложению.
Приложение - крешрепортер. Хватает с диска дамп и отправляет по заданному урлу.
Внутри крешрепортера, как я понимаю, стандартный crashpad.
Тест я написал с использованием стандартного класса из chromium EmbeddedTestServer (ссылка)
По сути, весь тест - это вызов метода EmbeddedTestServer::InitializeAndListen + код, который отдаёт html (там внутри стандартный фарш из socket+bind+listen+accept+recv+send).

Далее я открыл браузер, убедился, что сервер виден по адресу 127.0.0.1:8080
Запустил крешрепортер и.... он сервер не видит.
Ок. Я взял node js, написал на нём примитивный http сервер (вроде этого). Запустил, и убедился, что сервер виден как из браузера, так и из крешрепортера.

И теперь меня терзает вопрос: как, блин? Ведь по сути, в обоих случаях есть некий слушающий сокет, который (после соединения) начинает отдавать html.
Но когда этот сокет завёрнут в chromium код, и работает в отдельном процессе, он "виден" только из браузера. А когда сокет живёт внутри node js он, внезапно, виден и из крешрепортера тоже.
Почему??

У меня есть только одна догадка: крешрепортер использует для работы winhttp, а обычный браузер, видимо, winsock. Но при использовании локального сервера это, наверное, не важно. Опять таки, node js замечательно работает в обоих случаях.
Какие ещё могут быть различия у этих двух "серверов"?
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы