• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Решено Почему один код быстрее другого? (net.TCP)

Статус
В этой теме нельзя размещать новые ответы.

mocart

New member
Сегодня натолкнулся на необычное поведение модуля с применением 2 разных кодов по развертыванию net.TCP сервера, а именно: при попытке открыть этот TCP сервер на модуле, Код №1, работает быстрее Кода №2, при том, что Код №2 менее загружен. Медленность заключается в ответе клиенту, в терминале вижу, что модуль сразу же получает запрос, а вот отправка задерживается, получаю примерно через 3-5 секунд, а в коде всего лишь "<h1> Hello, NodeMCU.</h1>", в чем может быть дело?
p.s. также пробовал отправлять запрос через curl, один фиг, такая же картина
p.p.s. расстояние не большое, пинги хорошие

сначала загрузил Код №1:
Код:
tmr.stop(0)
wifi.setmode(wifi.STATION);
wifi.sta.config("homewifi","12345678")
wifi.sta.connect()
wifi.sta.autoconnect(1)
gpio.mode(4, gpio.OUTPUT)

srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
    conn:on("receive", function(client,request)
        local buf = "";
        local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
        if(method == nil)then
            _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
        end
        local _GET = {}
        if (vars ~= nil)then
            for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
                _GET[k] = v
            end
        end
        buf = buf.."<h1> Hello, NodeMcu.</h1><form src=\"/\">Turn PIN1 <select name=\"pin\" onchange=\"form.submit()\">";
        local _on,_off = "",""
        if(_GET.pin == "ON")then
              _on = " selected=true";
              gpio.write(4, gpio.HIGH);
        elseif(_GET.pin == "OFF")then
              _off = " selected=\"true\"";
              gpio.write(4, gpio.LOW);
        end
        buf = buf.."<option".._on..">ON</opton><option".._off..">OFF</option></select></form>";
        client:send(buf);
        client:close();
        collectgarbage();
    end)
end)

Потом загрузил Код №2 (взял из примера на сайте nodemcu.com)
Код:
tmr.stop(0)
wifi.setmode(wifi.STATION);
wifi.sta.config("homewifi","12345678")
wifi.sta.connect()
wifi.sta.autoconnect(1)
gpio.mode(4, gpio.OUTPUT)

srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
    conn:on("receive",function(conn,payload)
    print(payload)
    conn:send("<h1> Hello, NodeMCU.</h1>")
    end)
end)
 
Последнее редактирование:

mocart

New member
Не могу понять в чем дело, попробуйте кто-нибудь у себя,может быть вместе решим вопрос или придем к выводу, что проблема в моем модуле
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу