_dark_ 0 28 сентября, 2021 Опубликовано 28 сентября, 2021 (изменено) · Жалоба Всех приветствую!Использую связку ESP8266+STM32 (8266 используется в режиме AT команд, прошивка по дефолту, никаких сторонних библиотек и пр. )Железяка подключена к сети на адресе 192.168.0.108 (на 8266 поднят клиент и сервер), комп с которого тестирую 192.168.0.103.На запрос по адресу http://192.168.0.108 железка (STM32) отвечает всегда, но вот браузер висит и иногда разрождается вот этим: Прослушиваю сеть, ответ на GET поступает всегда (скрин с Wirashark) - синим выделен ответ сервера Ответ соответствует вот этому коду (как файл htm он отображается нормально): <html> <head> <title>TEST HTML</title> </head> <body> <h1>Тест HTML</h1> <p>Простой тест ответа</p> </body> </html> Что не хватает в ответе , чтобы браузер воспринимал ответ регулярно?практически он всегда висит в каком-то ожидании и теряет страницу, хотя по F5 на его запрос ответ высылается всегда Т.е. после набора в строке браузера http://192.168.0.108 браузер выдает запрос GET (есть в файле опроса сети *pcapng),STM32 получает этот GET (стабильно всегда), парсит и отвечает (см. картину выше и файл)в результате на ПК (192.168.0.103 откуда запущен браузер) эти ответы проходят (всегда)но браузер не отображает ответ (страничку теста) и "крутится" в ожидании (чего ему надо не знаю)перезапрашивая по F5 (фактически повторяя запрос страницы) все повторяется (т.е. запросы и ответы проходят) и...в какой-то момент времени (после N-го нажатия F5) страница отображается, но следующие запросы опять не проходят (браузер висит - крутится значок ожидания) Прошу пнуть в нужном направлении! - думается, что помог бы файл с захватом обмена между простым сервером (своей железки) и браузером в Wirashark, как выложил ниже ps- браузеры разные ведут себя одинаково (хром, яндекс, макстон) Прикладываю файлы скринов и сохраненный захват в Wirashark, в нем можно просмотреть весь обмен в сети 192.168.0.108_to_192.168.0.103.zip Полный ответ сервера выглядит так: HTTP/1.1 200 OK\r\n Server: httpd\r\n Content-Type: text/html\r\n Connection: close\r\n Refresh: 1\r\n Content-Length: ххх \r\n\r\n <!DOCTYPE html>\r\n <html>\n <head><title>TEST HTML</title></head>\n <body>\n <h1>Тест HTML</h1>\n <p>Простой тест ответа сервера</p> </body>\n </html> где ххх длина в байтах все что ниже текстом Изменено 28 сентября, 2021 пользователем _dark_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andreas1 1 28 сентября, 2021 Опубликовано 28 сентября, 2021 · Жалоба Content-Length: ххх - точно правильный , длинна только текста, без первых \r\n\r\n ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_dark_ 0 28 сентября, 2021 Опубликовано 28 сентября, 2021 (изменено) · Жалоба 31 minutes ago, Andreas1 said: Content-Length: ххх - точно правильный , длинна только текста, без первых \r\n\r\n ? Ага, точно накосячил (внес недавно их в массив тела ответа), перепроверю.... Изменено 28 сентября, 2021 пользователем _dark_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 187 28 сентября, 2021 Опубликовано 28 сентября, 2021 · Жалоба 1 час назад, _dark_ сказал: (на 8266 поднят клиент и сервер) Это действительно работает? Проверили? Одновременно работает и то и другое? Просто насколько помню - ESP8266 умел работать только или как клиент или как сервер, но не одновременно. Хотя - может на новых прошивках уже не так.... Версию своей прошивки Вы не указали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_dark_ 0 29 сентября, 2021 Опубликовано 29 сентября, 2021 · Жалоба Andreas1, Fndreas1, спасибо за пинок, да, дело было в длине! зы не понял как тут плюсануть ... 19 hours ago, jcxz said: Это действительно работает? Проверили? Одновременно работает и то и другое? Да, работает. Как клиент подключается к офисной сети с IP 192.168.0.108, как сервер создает свою (IP 192.168.4.1) оба адреса отвечают одинаково. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 187 29 сентября, 2021 Опубликовано 29 сентября, 2021 · Жалоба 8 минут назад, _dark_ сказал: Да, работает. Как клиент подключается к офисной сети с IP 192.168.0.108, оба адреса отвечают одинаково. Вы не поняли моего вопроса.... Я спрашивал про одновременную работу 2-х разных соединений, открытых - один в режиме сервера, другой - в режиме клиента. "Одновременная" - это значит 2-е открывается при незакрытом 1-м. То, на что Вы ссылаетесь - это протокол HTTP, который обычно устанавливает соединение только на время передачи одного файла, и закрывает его сразу после окончания передачи (за исключением опционального режима keep-alive). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 29 сентября, 2021 Опубликовано 29 сентября, 2021 · Жалоба 1 час назад, jcxz сказал: Я спрашивал про одновременную работу 2-х разных соединений А так вообще можно? Если с IP из разных подсетей, то это уже, как мост получается, или имелось ввиду с одним IP? 1 час назад, _dark_ сказал: Как клиент подключается к офисной сети с IP 192.168.0.108, 1 час назад, _dark_ сказал: как сервер создает свою (IP 192.168.4.1) И как он у вас одновременно в разных подсетях работает? Роутеру пофиг на это, или он сам у вас , как точка доступа? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 187 29 сентября, 2021 Опубликовано 29 сентября, 2021 · Жалоба 52 минуты назад, mantech сказал: А так вообще можно? Если с IP из разных подсетей, то это уже, как мост получается, или имелось ввиду с одним IP? А почему нельзя? (не применительно к ESP8266, а вообще) Не понял - причём тут разные подсети? Цитата И как он у вас одновременно в разных подсетях работает? Роутеру пофиг на это, или он сам у вас , как точка доступа? Имхо - Вы смешиваете режим подключения к WiFi (AT+CWMODE) и работу TCP-стека. Клиент/сервер - это про TCP-стек. В каком режиме подключен ESP к WiFi (AT+CWMODE) - без разницы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rkit 1 29 сентября, 2021 Опубликовано 29 сентября, 2021 · Жалоба esp8266 может одновременно рабоать и как точка доступа, и как клиент wifi, с разными ip на разных интерфейсах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_dark_ 0 29 сентября, 2021 Опубликовано 29 сентября, 2021 · Жалоба jcxz 8266 работает в обоих режимах клиент-сервер (запускается командой "AT+CWMODE=3\r\n"), естественно в разных сетях. Т.е. он одновременно подключен к роутеру с IP 192.168.0.108 как станция и поднимает сеть с IP 192.168.4.1 как точка доступа. То, что я одновременно не могу подключится к обоим сетям не проблема 8266, просто на компе у меня 1 адаптер WiFi (поэтому см. попеременно), но могу с др. компа подключиться к 8266, например с мобильника... Впрочем rkit уже тоже подтвердил... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 187 29 сентября, 2021 Опубликовано 29 сентября, 2021 · Жалоба 22 минуты назад, _dark_ сказал: 8266 работает в обоих режимах клиент-сервер (запускается командой "AT+CWMODE=3\r\n"), естественно в разных сетях. Т.е. он одновременно подключен к роутеру с IP 192.168.0.108 как станция и поднимает сеть с IP 192.168.4.1 как точка доступа. Что-то вы никак не поймёте... Мой вопрос внимательнее прочитайте! И мой ответ mantech. Я не спрашиваю о режиме подключения к WiFi. Вопрос мой - о возможности открытия одновременно двух TCP-соединений в разных режимах. В режиме сервера и в режиме клиента. TCP-соединение - это то, что в ESP8266 устанавливается командой AT+CIPSTART. Уже после того как он подключен к WiFi. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_dark_ 0 29 сентября, 2021 Опубликовано 29 сентября, 2021 · Жалоба Естественно есть тонкое место это сам stm32, т.к. у него один канал с 8266 и отдает он ответ на "текущий запрос". Если один запрос перебьет другой (из разных сетей), то один будет потерян. Но в ручном режиме запросов с двух устройств, это пока не заметно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 187 29 сентября, 2021 Опубликовано 29 сентября, 2021 · Жалоба 6 минут назад, _dark_ сказал: Если один запрос перебьет другой (из разных сетей), то один будет потерян. Ничего не понял.... кто кого "перебьёт" и почему? PS: Я это к тому, что помню в документации ESP8266 находил упоминание о невозможности создания TCP-соединений в разных режимах - пассивном (сервер) и активном (клиент). А из вашего первого поста я понял, что у вас как раз одновременно: и TCP-клиентские сокеты и TCP-серверные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_dark_ 0 29 сентября, 2021 Опубликовано 29 сентября, 2021 · Жалоба 4 minutes ago, jcxz said: ESP8266 устанавливается командой AT+CWJAP Так это команда подключения только как станция (AT+CWJAP – Connect to AP). Точку доступа 8266 поднимает автоматически, если ее режим включен (по дефолту на IP ....4.1). Одновременно с работой в режиме станции, т.е. точка доступа включается быстрее и автоматически (по моему), а станция пока подключится сек. 5 пройдет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 187 29 сентября, 2021 Опубликовано 29 сентября, 2021 · Жалоба 3 минуты назад, _dark_ сказал: Так это команда подключения только как станция (AT+CWJAP – Connect to AP). Сорри - перепутал. Я говорил о команде AT+CIPSTART конечно же. 3 минуты назад, _dark_ сказал: Точку доступа 8266 поднимает автоматически, Да опять 25.... Вы мои вопросы читаете??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться