jcxz 184 6 ноября, 2021 Опубликовано 6 ноября, 2021 · Жалоба 30.09.2021 в 18:47, Andreas1 сказал: Нельзя два сервера иметь, а один сервер и несколько клиентов можно. Запрета что-то не нахожу. Проверил всё-таки ещё раз на пациенте: AT version:1.3.0.0(Jul 14 2016 18:54:01) SDK version:2.0.0(656edbf) compile time:Oct 29 2016 22:56:21 Действительно: одновременная работа с клиентскими и серверными соединениями - поддерживается. Но API AT-команд этой версии сделано настолько криво, что практически крайне трудно использовать одновременные клиентские+серверные сокеты. Так как по сообщению об открытии соединения "link_id, CONNECT" совершенно невозможно узнать - какое именно соединение установлено: клиентское или серверное? Если например в данный момент нет ни одного открытого соединения и дать команду "AT+CIPSTART" и за ней придёт сообщение "0,CONNECT", то по этому сообщению совершенно непонятно - какое именно соединение установлено: клиентское (установленное по команде "AT+CIPSTART") или серверное (из-за случившегося в этот момент входящего соединения)? Есть команда "AT+CIPSERVERMAXCONN" и ей можно было бы установить ограничение на кол-во серверных соединений. Например "AT+CIPSERVERMAXCONN=2", а значит все соединения с ID>1 будут однозначно клиентскими. Но в моей версии прошивки "AT+CIPSERVERMAXCONN" не работает. Наверное можно что-то сделать при помощи команды "AT+CIPSTATUS" (после прихода "x,CONNECT" давать "AT+CIPSTATUS" и точно идентифицировать тип соединения). Надо будет проверить это... PS: Видимо поэтому, когда я изучал ESP8266, я сделал вывод о невозможности использования одновременных клиентских+серверных сокетов. PPS: Все мои ESP8266 - это модули с али с флешкой 512КБ и прошивки новее туда просто не влазят из-за невменяемого объёма. Просто не понимаю - как так можно писать код, что 512КБ не хватает для такого несложного функционала, как у ESP8266??? PPPS: Или можно какую-то более новую версию AT-прошивки впихнуть в 512КБ? Кто подскажет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andreas1 1 6 ноября, 2021 Опубликовано 6 ноября, 2021 · Жалоба 8 минут назад, jcxz сказал: Если например в данный момент нет ни одного открытого соединения и дать команду "AT+CIPSTART" и за ней придёт сообщение "0,CONNECT", то по этому сообщению совершенно непонятно - какое именно соединение установлено Я клиентский сокет 5й делал, а серверные самооткрытые с 0 начинались всегда и я принудительно закрывал сокеты выше 1го, браузер это ценил и не открывал больше лишних. CIPSERVERMAXCONN тоже тогда не было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 6 ноября, 2021 Опубликовано 6 ноября, 2021 · Жалоба 59 минут назад, Andreas1 сказал: Я клиентский сокет 5й делал, а серверные самооткрытые с 0 начинались всегда и я принудительно закрывал сокеты выше 1го, браузер это ценил и не открывал больше лишних. CIPSERVERMAXCONN тоже тогда не было. Да, я тоже о таком алгоритме думал. Но если надо несколько клиентских и серверных, то расстояние (в количестве ID) между ними может оказаться недостаточным, чтобы успеть закрывать. Особенно если браузер скачает первый файл, распарсит его и решит сразу установить ещё 4 дополнительных соединения. PS: Проверил "AT+CIPSTATUS" - действительно она работает. С помощью неё получается можно точно классифицировать типы соединений. Но почему нельзя было разработчикам ESP8266 подумать и сразу в сообщении о новом соединении указывать какого оно типа??? Либо в "AT+CIPSERVER" задавать диапазон допустимых ID для входящих соединений? Либо ещё как. Очень кривое API! Потому как, если по свежеустановленному соединению сразу начинают приходить данные (а "AT+CIPSTATUS" для классификации мы ещё не успели дать), то совершенно непонятно - как эти данные обрабатывать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andreas1 1 6 ноября, 2021 Опубликовано 6 ноября, 2021 · Жалоба 1 час назад, jcxz сказал: Особенно если браузер скачает первый файл, распарсит его и решит сразу установить ещё 4 дополнительных соединения Если паковать сразу пачку файлов сайта gzip и отправлять разом с Content-Encoding: gzip, то зачем еще 4 соединения? Ну если еще жабаскрипт на сайте что-то запрашивает, то еще одно откроет. 1 час назад, jcxz сказал: Очень кривое API! Как вежливо и мягко сказано! еще пример - +IPD,sock,len:data , но +SYSFLASH:len,data И так везде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 7 ноября, 2021 Опубликовано 7 ноября, 2021 · Жалоба 06.11.2021 в 14:53, Andreas1 сказал: Если паковать сразу пачку файлов сайта gzip и отправлять разом с Content-Encoding: gzip А так можно разве? Я не силён в HTML, всегда считал, что если внутри HTML-страницы есть ссылки на другие (вложенные) файлы (.htm, .png, .gif, ...), то каждый такой файл должен паковаться в отдельный архив (если упаковка действует) и передаваться клиенту как отдельный файл. Ведь клиент парсит страницу и запрашивает упомянутые в ней файлы по отдельности. Или он может как-то запросить сразу все файлы из .htm? Как? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 8 ноября, 2021 Опубликовано 8 ноября, 2021 · Жалоба On 11/6/2021 at 3:53 PM, Andreas1 said: Если паковать сразу пачку файлов сайта gzip и отправлять разом с Content-Encoding: gzip Есть СТАНДАРТ. Всё расписано. И про gzip/deflate в том числе. И про inline content Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andreas1 1 8 ноября, 2021 Опубликовано 8 ноября, 2021 · Жалоба 8 часов назад, jcxz сказал: А так можно разве? У меня простая страница, весь js внутрь запихал и зажал. Отложилось в памяти, что можно, но похоже что нет, ввел в заблуждение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 8 ноября, 2021 Опубликовано 8 ноября, 2021 · Жалоба В моём проекте тоже: всё содержимое сайта сжато gzip и затем упаковано в архив. И положено в прошивку единым архивом. Но файлы из этого архива уже вытаскивает код моего сервера, runtime, по запросам от клиента. По одному файлу на каждый запрос распаковываются. И отдаются (отдаются сжатыми gzip, не разжимаются). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 8 ноября, 2021 Опубликовано 8 ноября, 2021 · Жалоба Простейший bat файл делает из всех файлов для веб сервера gzip файлы. Затем делает C файл с массивами (название файла, тип, длина, данные) и ничего runtime распаковывать не надо. Для редактирования файлов для веб - Visual Studio (или любой другой). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 8 ноября, 2021 Опубликовано 8 ноября, 2021 · Жалоба 5 минут назад, x893 сказал: Простейший bat файл делает из всех файлов для веб сервера gzip файлы. атем делает C файл с массивами (название файла, тип, длина, данные) и ничего runtime распаковывать не надо. Это и есть - упаковка в архив. Который потом в runtime распаковывается. А вот в "С файл" преобразовывать совершенно не нужно: любой вменяемый компоновщик должен уметь подключать бинарные файлы в результирующий образ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 8 ноября, 2021 Опубликовано 8 ноября, 2021 · Жалоба 1 minute ago, jcxz said: Который потом в runtime распаковывается. Это зачем ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 8 ноября, 2021 Опубликовано 8 ноября, 2021 · Жалоба 2 минуты назад, x893 сказал: Это зачем ? Затем, что HTTP-клиент запрашивает файлы по одному, а не всем скопом (или по-крайней мере до тех пор, пока Andreas1 не объяснит как отдать все скопом). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 8 ноября, 2021 Опубликовано 8 ноября, 2021 · Жалоба 9 minutes ago, jcxz said: Затем, что HTTP-клиент запрашивает файлы по одному Это и ежику понятно. Зачем хранить одним файлом и runtime распаковывать и потом что делать с распакованным - опять запаковывать в gzip как отдельный файл ? 9 minutes ago, jcxz said: пока Andreas1 не объяснит как отдать все скопом Пока он не прочитает что такое inline content В общем бессмысленная беседа. Работает и хорошо. И у меня работает без всякой runtime распаковки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 8 ноября, 2021 Опубликовано 8 ноября, 2021 · Жалоба 24 минуты назад, x893 сказал: Это и ежику понятно. Зачем хранить одним файлом и runtime распаковывать и потом что делать с распакованным - опять запаковывать в gzip как отдельный файл ? Вы похоже не понимаете разницы между "сжатием" и "упаковкой в архив". gzip - сжимает, это компрессор. Он не упаковывает в архив. Перечитайте ещё раз моё сообщение, на которое вы стали отвечать. Я там писал 1 час назад, jcxz сказал: всё содержимое сайта сжато gzip и затем упаковано в архив отдельно про 2 фазы. Я: 1. Сжимаю все файлы gzip. 2. Упаковываю в единый cpio-архив. И у меня это тоже делает бат-ник: создаёт .cpio-файл. В runtime я выполняю только распаковку, а не декомпрессию: 1 час назад, jcxz сказал: (отдаются сжатыми gzip, не разжимаются) Содержимое архива (файл content.cpio) компоновщик включает в образ прошивки. cpio - простой формат архива, который несложно распаковать в runtime. Но при этом - это стандартный формат, так как его могут просматривать распространённые распаковщики и файловые менеджеры. Цитата В общем бессмысленная беседа. Работает и хорошо. И у меня работает без всякой runtime распаковки. То, что Вы описали - это и есть распаковка. Только вашего проприетарного формата. Да ещё зачем-то сконвертированного в си-текст. Когда у Вас будет сервер с объёмным содержимым (в десятки-сотни файлов), тогда поймёте разницу между доморощенным методом с си-текстом с проприетарным форматом и стандартным архивом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 8 ноября, 2021 Опубликовано 8 ноября, 2021 · Жалоба Вот и разрешилось. Отлично. Мне .cpio не нужен. Но нужны: имя файла, Content-Length и желательно Content-Type - но его можно и программно получить из расширения. А веб я делаю в виде проекта под VS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться