powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / httplib: скорость клиент-серверного обмена (HTTP 1.1)
94 сообщений из 94, показаны все 4 страниц
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061166
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь сделать простенький HTTP сервер с использованием библиотеки httplib .
Смущает скорость обмена: если "всё по умолчанию", то примерно один запрос GET в одну-две секунды.
Если клиент включает keep-alive, то скорость возрастает до 2 запросов в секунду. Что также удручает.

Опыта написания http клиентов и серверов нет, может, это нормально?
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061169
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Клиент посылает GET - запросы вида /id=число, например:
Код: plaintext
1.
/id=123


Сервер возвращает ответы вида
Код: plaintext
1.
Echo 123

.

Код сервера:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
#include <httplib.h>
namespace htl = httplib;

int main()
{
	htl::Server srv;
	srv.Get("/id=(d+)", [](const htl::Request& req, htl::Response& res) {
		auto param = req.matches[1];
		auto result = "Echo " + param.str();
		res.set_content(result, "text/plain");
	});
	srv.listen("0.0.0.0", 8080);
}
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061179
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извинения, код сервера чуть подправлен:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#include <httplib.h>

namespace htl = httplib;

int main()
{
	htl::Server srv;
	srv.Get(R"(/id=(\d+))", [](const htl::Request& req, htl::Response& res) {
		auto param = req.matches[1];
		auto result = "Echo " + param.str();
		res.set_content(result, "text/plain");
	});
	srv.listen("0.0.0.0", 8080);
}


Код клиента:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
#include <httplib.h>
#include <ctime>

namespace htl = httplib;

int main()
{
	htl::Client cli("localhost", 8080);

//	cli.set_keep_alive(true); // Если установить - будет быстрее
	
	time_t my_time = time(NULL);
	printf("%s", ctime(&my_time));

	for (auto i = 0; i < 10; i++) {
		std::string req = "/id=1";// +std::to_string(i);
		auto res = cli.Get(req.c_str());
	}

	my_time = time(NULL);
	printf("%s", ctime(&my_time));

}
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061187
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может там еще какие таймауты влияют

c set_keep_alive(true) конечно будет быстрее, сейчас в броузерах это по дефолту имхо

set_keep_alive_max_count выставь (черт знает сколько, 5-10 допустим)

надо все Сеттеры смотреть, что они делают
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061209
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov,

да. Увеличение set_keep_alive_max_count увеличивает скорость.
Запросто можно и 500 (и выше) сообщений в секунду получить.
Но - вот беда: первое сообщение хоть убей 2 секунды. Т.е., время коннекта.
Т.обр., нужно учесть характер данных и алгоритм обмена.

Огромное спасибо.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061210
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
Т.е., время коннекта.

Радует, что "тормоза" - на стороне клиента. Т.е., праллельные коннекты сервер почти не замедляют.
Спасибо ещё раз.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061227
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъСмущает скорость обмена: если "всё по умолчанию", то примерно один запрос GET в одну-две
секунды.

Кто клиент и какой протокол? Если браузер без явного указания префикса протокола, то он
пробует щемиться по https сначала и только если не вышло - переключается на http. А если у
тебя https, то там безумный handshake с проверкой сертификатов и обращением к 100500
центрам сертификации перед началом собственно обмена.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061233
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

клиент - тоже я (см. код 22306718 ). :)

Протокол HTTP 1.1, не использую никаких SSL/TLS.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061237
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ, используй пул из нескольких соединений.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061239
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
ъъъъъ, используй пул из нескольких соединений.


Э... клиент должен быть с сервером постоянно на связи? Если да, то, наверное, никак. Да и не особо нужно.

Задержка при коннекте на стороне клиента не особо важна. Я сперва подумал, что это сервер тормозит, сие было бы грустно: например, с утра десятки тысяч клиентов лезут к серверу, это скорее сдохнешь, чем результат получишь...
А так - нормально, торможение в момент коннекта фактически только на клиенте.
Результаты удовлетворительны, если что - буду копать глубже.
Спасибо.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061256
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем проблема? Пул объектов - нормальный порождающий шаблон проектирования.
Он тут как раз подходит. Можно его наделить логикой idle_timeout когда созданные соединения
после часа простоя - отключаются. Тогда не нужна постоянная связь.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061262
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
А в чем проблема?

Да по логике не нужно. Предполагается, что при старте любого "бизнес-приложения" нашего программного комплекса будет стартовать крошечное приложение - этот самый http-клиент, проверяющий наличие обновлений.
Приложение будет работать параллельно (проверка наличия обновлений и, если нужно, загрузка), даже когда "бизнес-приложение" завершит работу. То есть, если потратится лишние 2 сек на первоначальный коннект - это вовсе не беда. И даже если связи не будет совсем - тоже не беда, потом скачают, или курьера (как сейчас) пошлют. Я боялся, что затык сервера будет, так как таких клиентов довольно много.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061280
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъклиент - тоже я (см. код 22306718
Протокол HTTP 1.1, не использую никаких SSL/TLS.

Тогда хрень какая-то. Ответ должен приходить со скоростью пинга.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061302
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
ъъъъъклиент - тоже я (см. код 22306718
Протокол HTTP 1.1, не использую никаких SSL/TLS.

Тогда хрень какая-то. Ответ должен приходить со скоростью пинга.
Да. Если на сервере вместо
Код: plaintext
1.
	srv.listen("0.0.0.0", 8080);


задать
Код: plaintext
1.
	srv.listen("localhost", 8080);


или сетевое имя компьютера - то всё очень-очень быстро.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061304
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, это я тормоз. Клиент должен коннектиться не localhost, а к 127.0.0.1, тогда не будет задержки при коннекте.
Или серверу следует указывать привязку не к "0.0.0.0", а к "::". Тогда пофиг, что клиент будет указывать при коннекте - localhost, 127.0.0.1 или сетевое имя компьютера.
Что-то связано с ipv4/ipv6, завтра разберусь. Спать пошел.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061311
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это виноват "местный" dns, разрешение имен, частая сетевая проблема
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061327
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не DNS, а hosts в данном случае. Он ресольвит localhost в два адреса - IPv6 и IРv4. По умолчанию IPv6 имеет приоритет и клиент пытается использовать его. Кривая библиотека: достаточно умная чтобы использовать IPv6, но недостаточно умная для коннекта сразу на все полученные адреса.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40061331
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hosts и есть "местный" локальный ДНС
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062084
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сокет (клиентский и серверный) создается в https://github.com/yhirose/cpp-httplib/blob/master/httplib.h#L2061
В клиенте функция getaddrinfo() (коннект к "localhost") возвращает список addrinfo структур, в которых addrinfo с протоколом ipv6 идут первыми, а затем иду ipv4. А в сервере (бинд к "0.0.0.0") формируется список только из addrinfo с ipv4.
Таким образом, клиент создает сокет ipv6, который лезет к серверу ipv4, обламывается через 2 секунды, берет следующий addrinfo с ipv4, получает правильный коннект. Если сервер биндится в "::", то в итоге он будет "висеть" на сокете ipv6 (все та же getaddrinfo()).
...
Если в https://github.com/yhirose/cpp-httplib/blob/master/httplib.h#L2069 задать хинт, вместо
Код: plaintext
1.
  hints.ai_family = AF_UNSPEC;


задать, например,
Код: plaintext
1.
  hints.ai_family = AF_INET;


то и клиент и сервер будет работать по ipv4.

Или в настройках ОС клиента изменить порядок приоритета, задав ipv4 более приоритетным:
В HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters создать/задать переменную DisabledComponents со значением 20 (hex).
Подробности: https://docs.microsoft.com/en-US/troubleshoot/windows-server/networking/configure-ipv6-in-windows.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062092
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,
Угу.
Большинство ПО прописывают что вырубать ipv6 и не парятся по этому поводу.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062097
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,

MSDNInternet Protocol version 6 (IPv6) is a mandatory part of Windows Vista and Windows Server 2008 and newer versions. We do not recommend that you disable IPv6 or its components. If you do, some Windows components may not function.

We recommend using Prefer IPv4 over IPv6 in prefix policies instead of disabling IPV6.

Кто я такой, чтобы идти против MS-Soft.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062101
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъклиент создает сокет ipv6, который лезет к серверу ipv4, обламывается через 2 секунды,
берет следующий addrinfo с ipv4, получает правильный коннект.

Вот именно поэтому правильные клиенты создают сокеты сразу для всех полученных addrinfo,
коннектятся в неблокирующем режиме и используют тот сокет, который сумел успешно
подключиться раньше остальных. Остальные можно либо пристрелить, либо отправить в пул для
последующего повторного использования.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062106
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
ъъъъъклиент создает сокет ipv6, который лезет к серверу ipv4, обламывается через 2 секунды,
берет следующий addrinfo с ipv4, получает правильный коннект.

Вот именно поэтому правильные клиенты создают сокеты сразу для всех полученных addrinfo,
коннектятся в неблокирующем режиме и используют тот сокет, который сумел успешно
подключиться раньше остальных. Остальные можно либо пристрелить, либо отправить в пул для
последующего повторного использования.
Да, библиотека https://github.com/yhirose/cpp-httplib - "блокирующая".

Ну, в плане создания клиентского сокета, думаю, можно чуток и подшаманить.
Спасибо.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062108
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъДа, библиотека https://github.com/yhirose/cpp-httplib - "блокирующая".

Это сугубо всё равно. Блокирующей библиотеке никто не запрещает использовать неблокирующие
сокеты с select/poll/и т.п.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062121
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

да.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062122
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
PetroNotC Sharp,

MSDNInternet Protocol version 6 (IPv6) is a mandatory part of Windows Vista and Windows Server 2008 and newer versions. We do not recommend that you disable IPv6 or its components. If you do, some Windows components may not function.

We recommend using Prefer IPv4 over IPv6 in prefix policies instead of disabling IPV6.

Кто я такой, чтобы идти против MS-Soft.ты счас на работе?
Зайди в свойства сети и проверь галку на ver 6
Стоит?
У меня нет в достаточо крупной конторе)))
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062150
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
ты счас на работе?
Зайди в свойства сети и проверь галку на ver 6
Стоит?
У меня нет в достаточо крупной конторе)))

У нас десятки тысяч клиентов. Если у 1% клиентов возникнут вопросы - мы потонем.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062181
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,
Не знаю что вы готовый апач не возьмете на стока народу.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062183
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
ъъъъъ,
Не знаю что вы готовый апач не возьмете на стока народу.

Расскажи, чем апач лучше этого кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#include <httplib.h>

namespace htl = httplib;

int main()
{
	htl::Server srv;
	srv.Get(R"(/id=(\d+))", [](const htl::Request& req, htl::Response& res) {
		auto param = req.matches[1];
		auto result = "Echo " + param.str();
		res.set_content(result, "text/plain");
	});
	srv.listen("0.0.0.0", 8080);
}
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062184
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если речь о скорости пошла - то зачем вы с Апачем сравниваете?

Берите NGinx.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062186
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Если речь о скорости пошла - то зачем вы с Апачем сравниваете?

Берите NGinx.

Я вообще не понимаю, откуда вопросы о скорости.
Тормоза - только при коннекте, только на клиенте, и то лишь при определенных условиях, которые уже понятно как обойти.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062204
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,
"Расскажи, чем кресло лучше табуретки?))))
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062208
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема топика - встраиваемый http-сервер. Верно?
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062211
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Тема топика - встраиваемый http-сервер. Верно?

Э... по итогам: "Пауза при коннекте клиента к кастомному http-серверу на базе библиотеки httplib".
Наверное.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062214
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запускай клиент + сервер + tcpdump и по паузе между пакетами разберемся что чего ждет.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062223
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

прикалываешься.
Я в отладчике посмотрел, "чего ждёт". И рассказал: 22308270 .
Ещё раз. Вот код: https://github.com/yhirose/cpp-httplib/blob/master/httplib.h#L2063
Клиент, вызывая функция getaddrinfo(), по символическому имени хост-сервера получает одну или несколько структур addrinfo; каждая из структур содержит физический адрес, который можно указать в вызове bind () или connect (2). Особенность Windows такова, что если в системе разрешены ipv4 и ipv6, и символическое имя хост-сервера может быть разрешено в обоих протоколах, то список структур addinfo возвращается отсортированным с приоритетом "ipv6 раньше". Библиотека реализована так, что клиент по очереди "щупает" интерфейсы, создавая сокет и пытаясь связаться с указанным физическим адресом по конкретному протоколу. Первым "щупается" ipv6. Если сервер "сидит" на ipv4, то попытка коннект обламывается через таймаут ~2 сек. Вторая попытка выполняется уже по другому addrinfo, где протокол - ipv4, коннект выполняется успешно.
Вот и всё.
И про способы решения я тоже расписал, по той же ссылке. Плюс Д.Сибиряков предложил выполнять коннект сразу по всем протоколам, в неблокирующем режиме.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062224
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ну сорян. Тогда дерзай. Кодь дальше.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062274
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

А зачем в приложение на С++ встраивать вебсервер?
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062275
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Он внешним консольным сделает
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062296
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petrav
ъъъъъ,

А зачем в приложение на С++ встраивать вебсервер?

IPC.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062298
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
petrav
ъъъъъ,

А зачем в приложение на С++ встраивать вебсервер?

IPC.

Inter-process communication? Неужели для этого нужен веб-сервер? Ох ёп. :)
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062301
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petrav
ъъъъъ
пропущено...

IPC.

Inter-process communication? Неужели для этого нужен веб-сервер? Ох ёп. :)

Расскажи, что лучше.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062302
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
petrav
пропущено...

Inter-process communication? Неужели для этого нужен веб-сервер? Ох ёп. :)

Расскажи, что лучше.

ZeroMQ посмотри
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062303
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
petrav
пропущено...

Inter-process communication? Неужели для этого нужен веб-сервер? Ох ёп. :)

Расскажи, что лучше.
Что выбрать для межпроцессного взаимодействия модулей приложений?
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062304
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T
ъъъъъ
пропущено...

Расскажи, что лучше.

ZeroMQ посмотри

А что даст использование ZMQ?
HTTP протокол в данной задаче тем и хорош, что не требует постоянного соединения. Послал запрос, получил ответ или отлуп. А в ZMQ даже нет возможности со стороны сервера отказать в коннекте. И инициировать дисконнект с конкретным корреспондентом нельзя, только полное уничтожение сокета, с полным отваливанием всех. Да и вообще, не рекомендуется через ZMQ в Интернет выходить, хотя, да, появились поточные сокеты, и средства аутентификации, но с ними всеми пока больше хлопот, чем пользы. ZMQ - шикарен для локальных сетей и inproc коммуникации.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062306
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

У вас межпроцессное или сетевое?
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062308
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это только у сишников наверно что межпроцессное, что сетевое что веб все одно и тоже.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062354
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема "разгона веба" обсуждалась давно. И следствием ее возник протокол http/2.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062359
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Тема "разгона веба" обсуждалась давно. И следствием ее возник протокол http/2.
ну, если у него веб сервер а не AppServer как в java и шарпе то где же у него бизнес логика в коде?
В java она в сервлетах. В шарпе модули на IIS.
А тут вероятно в виде синшных функций рядом с main() {сервер.старт}
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062361
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю что с точки зрения сервлетов - ничего не поменяется.

Давай пятничным топиком обсудим. Трассировка сети в браузерах Chrome показывает
что по факту http2 уже используется во многих медийных порталах.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062364
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Упс. Фигню написал. У него простой апдейт приложения.
22306819
Обычно просто на фтп сервере проверяют. Есть ли обновления. Ну или в бд.
Тут целый веб сервер.
Оверхед.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062367
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
>http2
У нет проблем со скоростью.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062368
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я помню лет сто назад. Были такие жлобские протоколы типа TFPT (Trivial FTP). Без автентификации.
Использовался для обновления прошивок железа.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062369
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Занафига текстовый веб протокол чтобы обновить программа.exe при запуске?
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062370
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Счас на марсе вертолет обновляют BIOS.
Наверняка по текстовому)))
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062373
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
Занафига текстовый веб протокол чтобы обновить программа.exe при запуске?

Технически, классический ftp создает несколько сокетов. А http - это просто сокет-сервер. Как telnet.
Поэтому для качания 1-го файла http проще IMHO.

Для листинга файлов - ну да. Можно что-то прикрутить сбоку типа IndexMod (Apache). Но я думаю
что автор обойдется просто публикацией текстового файлика с листингом и с MD5 суммами.

Я так делал.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062376
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

То есть у тебя критерий только число сокетов? Нельзя по одному критерию решать ФТП или HTTP
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062378
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
Занафига текстовый веб протокол чтобы обновить программа.exe при запуске?

Я не очень понимаю зачем акцентировать внимание на текстовом и не-текстовом.

Туловище response (если оно бинарное) - так и есть - бинарное. Просто в заголовке ответа мы пишем
что декскыть app/octet-stream и лупим сырой поток.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062382
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,

То есть у тебя критерий только число сокетов? Нельзя по одному критерию решать ФТП или HTTP

Ну ты подумай сам. Если-б ты кодил свой FTP-сервер - то тебе сессию контролировать всяко проще по 1 сокету.
А по 2-м надо 2 потока и координацию между ними.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062394
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Я предлагаю судить не по текст или нет, и не по сокетам а по КОМПЛЕКСНЫМ критериям.
Что лучше для обновления экзешника.
Я не говорю только про текст.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062396
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
PetroNotC Sharp
mayton,

То есть у тебя критерий только число сокетов? Нельзя по одному критерию решать ФТП или HTTP

Ну ты подумай сам. Если-б ты кодил свой FTP-сервер - то тебе сессию контролировать всяко проще по 1 сокету.
А по 2-м надо 2 потока и координацию между ними.
apt-get install ftpd у меня на сервере
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062398
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТема "разгона веба" обсуждалась давно. И следствием ее возник протокол http/2.

Не так уж и давно. Она начала обсуждаться только после того как гугль эту самую "скорость
веба" загнал под плинтус принудительным внедрением HTTPS. Скорость HTTP/1.1 всех устраивала.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062399
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

По принудиловке они сволочи конечно.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062436
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
Я предлагаю судить не по текст или нет, и не по сокетам а по КОМПЛЕКСНЫМ критериям.
Что лучше для обновления экзешника.
Я не говорю только про текст.

А какая проблема обновлений экзешника? Поднимай самый древний Апач. И все будет чики-пики.
Подкладывай новые -xx.yy.zip и контрольные суммы.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062446
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
В архитектуре есть слово оверхед..
Для обновления экзешника веб сервер это именно это слово.
А работать будет и Ока и мерс и жигули.
Перевозить бинарник из точки А в точку Б.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062450
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПодкладывай новые -xx.yy.zip и контрольные суммы.

Зачем? В зипе уже есть контрольные суммы, а апач нормально отдаёт LastModified.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062452
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpВ архитектуре есть слово оверхед..
Для обновления экзешника веб сервер это именно это слово.

Оверхэдом уже является само автоматическое обновление экзешника, на его фоне всё остальное
- мелочи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062454
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
А какие есть методы обновления без переделки оного в веб приложение?
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062455
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
В архитектуре есть слово оверхед..
Для обновления экзешника веб сервер это именно это слово.
А работать будет и Ока и мерс и жигули.
Перевозить бинарник из точки А в точку Б.

Есть много схем обновления. Если софт пишется под Linux (Debian) - там есть своё коробочное
решение. Надо зарегать свой репо. Ключи. Подписи и т.п.

И дальше клиент обновляется автоматом по apt-get update/upgrade.

Под Windows - наверняка тоже есть что-то. MSI собрал. Обновился.

Мы когда - то использовали svn. Клиент у себя запускал svn update и все обновлялось.

Оверхед - здесь не самое главное. Встраиваемых http-серверов - миллионы + тележка.

Гораздо важнее ИМХО не соблюсти оверхед а найти "инженерное" решение. Инженер - приспосабливает
то что есть. А в перфекционизме - можно потерять и другое более ценное. Время на разработку например.
Зачем в миллионный раз разрабатывать http-сервер на С++ ? Ради амбиций? Ну да. Одобряю.
Ради бизнеса? Нет. Лучше приспособить то что уже проверено.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062456
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Ты про винду ничего не сказал. Как обновить программа.exe?
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062458
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
>Зачем в миллионный раз разрабатывать http-сервер на С++ ?
= это согласен.
Каждый прогер должен построить дом, написать логгер и свой сервер)
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062460
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
Ты про винду ничего не сказал. Как обновить программа.exe?

Мои знания про Windows устарели. Я работал в доменах Windows 2003 последний раз до 2010 года.
Что толку если я щас буду гуглить? Давай зададим этот вопрос в форуме Windows.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062468
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Да нету ничего. Ничего не изменилось с прошлого тысячилетия.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062470
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну там же есть этот. Windows-Market. Значит есть единая точка откуда можно взять сведенья по софту.

Может и обновления оттуда тоже потянуть.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062475
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Первый раз слышу чтобы его заюзал бизнес.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062476
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpКак обновить программа.exe?

Если софт корпоративный - MSI+доменная политика обновления. Если для личного использования
- вообще обновлять не надо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062477
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062478
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Комп в домене думаю оффтоп.
Это в корне меняет тему.
Зачем вообще тогда веб сервер)))
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062481
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ехе-msi->AppX->msix->?
Все хрень кроме первых двух
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062485
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему?
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062491
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Почему?
все ушли в веб. Там оказалось все проще.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062495
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне - не проще. Я Excel запускаю десктопный. Мне он - приятнее.

Вот как-то так...
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062505
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Я проще сказал не по отношеню эксель веб или десктоп.
А проще в веб уйти чем с msix разбираться.
Ну или по ФТП скачать.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062508
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Сильверлайт, корба, com - все сложное и умерло нафиг.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062518
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормальное развитие по спирали. Все последние 25 лет развития интернета - это попытки
прощупаь что из контента можно исполнять на сервере а что можно переложить на клиента.
И где найти ту грань сложности веб-кодинга чтобы послендний верстальщик-рукожоп смог
сверстать формочку.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062545
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
PetroNotC Sharp
ъъъъъ,
Не знаю что вы готовый апач не возьмете на стока народу.

Расскажи, чем апач лучше этого кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#include <httplib.h>

namespace htl = httplib;

int main()
{
	htl::Server srv;
	srv.Get(R"(/id=(\d+))", [](const htl::Request& req, htl::Response& res) {
		auto param = req.matches[1];
		auto result = "Echo " + param.str();
		res.set_content(result, "text/plain");
	});
	srv.listen("0.0.0.0", 8080);
}



Еще вариант на Node.JS написать. Если не просто хостинг а какие-то простые действия сделать надо.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062560
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
А меня мутит с Node). Как с 1С.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062565
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Google Chrome как-то же обновляется... Интересно как?

А у World Of Warcraft вообще потрясающая система обновления. Какой-то супер протокол, который определяет какие файлы нужно обновить и даже какие части этих файлов нужно обновить. Плюс сама система обновления построена на технологии торрентов. Когда миллионы геймеров примерно в одно и тоже время садятся поиграть, они достаточно быстро обновляют свою инсталляцию игры в десятки гигабайт. Это не обновление столько весит, а вся инсталляция.

Плюс возможность начать играть когда ещё не всё обновление скачано. Плюс обновление самого "обновлятора". Шедевр.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062572
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

А у World Of Warcraft вообще потрясающая система обновления. Какой-то супер протокол, который определяет какие файлы нужно обновить и даже какие части этих файлов нужно обновить. Плюс сама система обновления построена на технологии торрентов. Когда миллионы геймеров примерно в одно и тоже время садятся поиграть, они достаточно быстро обновляют свою инсталляцию игры в десятки гигабайт. Это не обновление столько весит, а вся инсталляция.

Плюс возможность начать играть когда ещё не всё обновление скачано. Плюс обновление самого "обновлятора". Шедевр.

Дерево Меркла. Позволяет очень быстро определить какие части файла рассинхронизованы с эталоном.

У меня есть предположение что утилита rsync так и работает.

И я когда-то предлагал такой обновлятор только не для файлов а для холодных бекапов баз данных сделать.

https://www.sql.ru/forum/1331028/sredovyy-rsync-cherez-http
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062580
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно играть когда обновление еще не скачано? ХЗ. Это наверное просто особенность игрового
софта. Он - толерантный например в части качества визуального материала. Еще Джон Кармак предлагал
различную поэтапную загрузку деталей текстур. MipMap.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062592
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Как можно играть когда обновление еще не скачано? ХЗ. Это наверное просто особенность игрового
софта. Он - толерантный например в части качества визуального материала. Еще Джон Кармак предлагал
различную поэтапную загрузку деталей текстур. MipMap.

Игровой мир разбит на локации. Не всем можно/нужно в новую локацию. Но она скачается прямо в процессе игры.
Но если она ещё не скачена, а пользователь туда уже ломится, ну снова в ожидание с приоритетом на скачивание
именно этой локации.

Главное преимущество — торренты встроенные прямо в updater игры. Пользователь даже не знает, что он торренты юзает и
сам же отдаёт обновление игры.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062607
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petrav,

торренты - это не магия, есть бесплатные библиотеки с простым интерфейсом, как раз для создания серверов мини- торрент-трекеров в целях реализации онлайн-дистрибуции.
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062620
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более того, одна из этих библиотек - WinAPI с недавнего времени.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
httplib: скорость клиент-серверного обмена (HTTP 1.1)
    #40062633
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
ъъъъъклиент создает сокет ipv6, который лезет к серверу ipv4, обламывается через 2 секунды,
берет следующий addrinfo с ipv4, получает правильный коннект.

Вот именно поэтому правильные клиенты создают сокеты сразу для всех полученных addrinfo,
коннектятся в неблокирующем режиме и используют тот сокет, который сумел успешно
подключиться раньше остальных. Остальные можно либо пристрелить, либо отправить в пул для
последующего повторного использования.
И итоге, автор просто добавил метод
Код: plaintext
1.
set_address_family(int);


Теперь перед коннектом можно принудительно задать, например, AF_INET или AF_INET6. :)
...
Рейтинг: 0 / 0
94 сообщений из 94, показаны все 4 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / httplib: скорость клиент-серверного обмена (HTTP 1.1)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]