• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Разработка ‘библиотеки’ малого webсервера на esp8266.

pvvx

Активный участник сообщества
Вопрос такой есть - зачем set_cpu_clk() постоянно вызывается в веб-сервере. Установленная скорость CPU слетает периодически?
Её отключает китай-SDK когда ей не попадя (от погоды и ...)
Еще вопрос - в колбеке после окончания сканирования проверяется текущий режим работы и если не совпадает то назначается заново. Режим слетает в результате сканирования? Флажок WIFI_MASK_STACN нигде не используется - канал для станции не назначается? Или это опечатка и должно быть WIFI_MASK_CHL ?
Это не опечатки, а оно так росло от одного SDK к другому и постоянно всё менялось, т.к. то не работало, то китайцы чего нового кривого добавят, а что-то починят. От этого менялись алгоритмы - подбирались чтобы работали в качестве обхода кривизны...
web_int_vars.c строка 422, вероятно, мелкий косячок:
if(tcp2uart_conn == NULL) tcp_abort(tcp2uart_conn->pcb);
Это блок тестовых команд. Они не связаны с конфигурацией и не используются. Решения как сделать disconnect при закрытом окне TCP при полном буфере UART так и нет. LwIP отказывается по стандартному закрывать такое соединение, когда у него торчит unrecved счетчик... Что-то делал (тестировал) с этим и остался хвост, с тем куском и ошибкой...
 
Последнее редактирование:

1801BM1

New member
Решения как сделать disconnect при закрытом окне TCP при полном буфере UART так и нет.
Там пост был не об этом. Переменная tcp2uart_conn сравнивается с NULL и потом происходит попытка извлечения из структуры по NULL для вызова tcp_abort .
 

pvvx

Активный участник сообщества
Там пост был не об этом. Переменная tcp2uart_conn сравнивается с NULL и потом происходит попытка извлечения из структуры по NULL для вызова tcp_abort .
Что-то делал (тестировал) с этим и остался хвост, с тем куском и ошибкой...
Не стер до конца эту ветку. Надо так https://github.com/pvvx/esp8266web/blob/master/app/web/web_int_vars.c#L435
И это можно стереть https://github.com/pvvx/esp8266web/blob/master/app/web/web_int_vars.c#L446
и много ещё. Всё зависит от задач :)
 
Последнее редактирование:

1801BM1

New member
А почему esp_init_data_default.bin стал в ./bin длиной 144 байта? Какие-то расширенные настройки? Кетайцы на днях выложили v1.2.0 - там по-прежнему 128.
 

pvvx

Активный участник сообщества
А почему esp_init_data_default.bin стал в ./bin длиной 144 байта? Какие-то расширенные настройки?
Там хранится 4 дополнительных переменных размерностью dword (32 бита), для использования в Web. Пока используется только один dword - в нем указан коэффициент деления для расчета VDD. Эти переменные имеют доступ через Web.
Чтение: ~ucnst_xx~, где xx = номер константы от 0 до 3
Запись: ucnst_xx=dd, где xx = номер константы от 0 до 3, dd = значение от в HEX 0 до 0xFFFFFFFF или dec.
Это сделано чтобы не терять объем сектора в 4096 байт на всего 128 байт и иметь там константы, которые редко переписываются (задаются при калибровке модуля и т.д.).
На странице Debug and Test можно установить коэффициент деления для расчета VDD:
Divided readvdd33(): 102000..103000 - это примерное значение для модуля ESP-01. Для других модулей зависит от резистора на TOUT (входе ADC)
Вычисляется оно и вводится как указано в сплывающем окне-подсказке.readvdd33()/Upow в вольтах, которое замерено тестером. Ниже эти данные выведены. Пример: Power: 3.33 V, readvdd33() = 339900. Измеряем Upower, вычисляем 339900/3.30 и вводим 103000. Получаем 'Power: 3.30 V'.
Автоматизировать невозможно - у модуля нет тестера :) Он не знает реального питающего его напряжения. Можно дописать не ввод коэффициента, а ввод реального напряжения и сделать расчет на Java... Но в "свалке Web" даны только начальные примеры и попроще.

Обращение к стандартным 128 байтам производится через 'const_nn' аналогично, но там байтные переменные.
Просмотреть и поменять эти константы можно в Debug and Test -> Next constants
Кетайцы на днях выложили v1.2.0 - там по-прежнему 128.
Отличие от прошлых установок в новых SDK находится в переменной freq_correct_en [112]:3. Ранее было значение 0.
На новую версию 1.2.0 скоро переделаю... но обычно они выпускают пару патчей до рабочего варианта :)
Код:
Сравнение файлов: 
ESP_IOT_SDK_V112\bin\esp_init_data_default.bin и ESP_IOT_SDK_V120\bin\esp_init_data_default.bin
FC: различия не найдены
 
Последнее редактирование:

pvvx

Активный участник сообщества
https://github.com/pvvx/esp8266web Версия 0.3.6. Обновлено на SDK 1.2.0. Добавлен одно-сегментный загрузчик 'Rapid Loader' на 176 байт для ускорения старта и загрузки 48к IRAM (если требуется) и установки стека в самое начало перед запуском call_user_start(). Загрузчик 'Rapid Loader' ставит QSPI F(quartz)x2 Mhz и грузит через аппаратный механизм 'кеша'. Память не использует - т.е. после загрузки его нет, только код в 176 байт в начале Flash.
Код:
-------------- 74880 baud TX:
ets Jan  8 2013,rst cause:1, boot mode:(3,7)

load 0x40100000, len 156, room 16
tail 12
chksum 0x71
csum 0x71

OpenLoaderSDK v1.2
...
-------------- 74880 baud Debug TX:
ets Jan  8 2013,rst cause:1, boot mode:(3,7)

load 0x40100000, len 156, room 16
tail 12
chksum 0x71
csum 0x71
-------------- 230400 baud Debug TX:
Simple WEB version: 0.1.3
OpenLoaderSDK v1.2
Flash Header:
SPI Flash Interface: QIO
SPI CLK: 80MHz
Flash size: 512K
Detect 'rapid loader'
Number of segments: 3
Entry point: 0x4010007c
Segment 1: offset: 0x40100000, size: 19552
Segment 2: offset: 0x3ffe8000, size: 2544
Segment 3: offset: 0x3ffe89f0, size: 3616
Found free IRAM: base:0x40104c60, size:29600 bytes
System memory:
data  : 0x3ffe8000 ~ 0x3ffe89f0, len: 2544
rodata: 0x3ffe89f0 ~ 0x3ffe9810, len: 3616
bss   : 0x3ffe9810 ~ 0x3fff24e8, len: 36056
heap  : 0x3fff24e8 ~ 0x3fffc000, len: 39704
Current 'heap' size: 39456 bytes
....
Исходников загрузчика 'Rapid Loader' пока не будет. Это бета версия и надо лепить целый публичный "касивый" проект со всякими makefile и т.д. для десятка строк на CИ. А пока лень :)
 
Последнее редактирование:
Так что насчёт вопроса по поводу:
С интересной проблемой столкнулся. Прошил модуль, залил Web - всё работает, всё нормально. Захожу через браузер на страничку модуля легко, но только из локальной сети. А вот когда пытаюсь зайти с другого компа через интернет на страничку модуля, то увы - страница не грузится. При этом проверяю открытый порт на мой IP на сайте 2IP.ru - результат положительный (отвечает, что порт открыт). В чём подвох? Может быть разборщик ругается?
Есть предположения?
 

pvvx

Активный участник сообщества
Так что насчёт вопроса по поводу:
Есть предположения?
Нужно полное описание всех роутеров и их конфигов + логи к примеру wireshark
По наибольшей вероятности у вас включен NAT от провайдера или неправильно задан конфиг роутера - не проброшен порт на модуль.
Вот запрос через proxy:
Код:
srv[80] 85.17.24.66:43804 [1] listen <--- запрос c proxy
srv[80] 85.17.24.66:43804 [1] read: 361 of1[index.htm] GET f[/index.htm] head[201]:200 send: of2[menu.inc] cf2 of2[footer.inc] cf2 of2[vdd.inc] cf2 of2[time.inc] cf2 cf1 2171 dis  <--- запрос и ответ на index.htm
srv[80] 85.17.24.66:44527 [2] listen <--- второй запрос c proxy на scan.xml (это другая страница открыта в другом окне 
srv[80] 85.17.24.66:44527 [2] read: 289 of1[scan.xml] GET f[/scan.xml] head[200]:200 send: cf1 1519 dis
srv[80] 85.17.24.66:44554 [3] listen <--- третий запрос c proxy style.css к index.htm
srv[80] 85.17.24.66:44554 [3] read: 306 of1[style.css] GET f[/style.css] head[187]:200 send: 1231 cf1 dis
srv[80] 85.17.24.66:43804 [3] disconnect <--- только тут зарылся первый запрос
srv[80] 85.17.24.66:44527 [2] disconnect <--- тут зарылся второй запрос
srv[80] 85.17.24.66:44577 [2] listen <--- ну и т.д. - далее запрос картинок к index.htm...
srv[80] 85.17.24.66:44577 [2] read: 307 of1[logo.gif] GET f[/logo.gif] head[163]:200 send: 393 cf1 dis
srv[80] 85.17.24.66:44584 [3] listen
srv[80] 85.17.24.66:44584 [3] read: 306 of1[esp.gif] GET f[/esp.gif] head[164]:200 send: 2756 ...
srv[80] 85.17.24.66:44554 [3] disconnect
srv[80] 85.17.24.66:44584 [2] send: 1460 ...
srv[80] 85.17.24.66:44584 [2] send: 1460 ...
srv[80] 85.17.24.66:44584 [2] send: 895 cf1 dis
srv[80] 85.17.24.66:44577 [2] disconnect
srv[80] 85.17.24.66:44584 [1] disconnect
srv[80] 141.212.122.170:24336 [1] listen <--- а это кто-то другой залез из паутины :) University of Michigan College of Engineering http://141.212.122.170/ :)
srv[80] 141.212.122.170:24336 [1] read: 55 GET f[] of255[501.htm] of255[501.htm/index.htm] head[182]:501 dis
srv[80] 141.212.122.170:24336 [1] disconnect
SNTP: Set time: 0x559823a6
И картинка, что дает эксплорер:
proxy.gif
 
Последнее редактирование:
Нужно полное описание всех роутеров и их конфигов + логи к примеру wireshark
По наибольшей вероятности у вас включен NAT от провайдера или неправильно задан конфиг роутера - не проброшен порт на модуль.
Вот запрос через proxy:
Код:
srv[80] 85.17.24.66:43804 [1] listen <--- запрос c proxy
srv[80] 85.17.24.66:43804 [1] read: 361 of1[index.htm] GET f[/index.htm] head[201]:200 send: of2[menu.inc] cf2 of2[footer.inc] cf2 of2[vdd.inc] cf2 of2[time.inc] cf2 cf1 2171 dis  <--- запрос и ответ на index.htm
srv[80] 85.17.24.66:44527 [2] listen <--- второй запрос c proxy на scan.xml (это другая страница открыта в другом окне
srv[80] 85.17.24.66:44527 [2] read: 289 of1[scan.xml] GET f[/scan.xml] head[200]:200 send: cf1 1519 dis
srv[80] 85.17.24.66:44554 [3] listen <--- третий запрос c proxy style.css к index.htm
srv[80] 85.17.24.66:44554 [3] read: 306 of1[style.css] GET f[/style.css] head[187]:200 send: 1231 cf1 dis
srv[80] 85.17.24.66:43804 [3] disconnect <--- только тут зарылся первый запрос
srv[80] 85.17.24.66:44527 [2] disconnect <--- тут зарылся второй запрос
srv[80] 85.17.24.66:44577 [2] listen <--- ну и т.д. - далее запрос картинок к index.htm...
srv[80] 85.17.24.66:44577 [2] read: 307 of1[logo.gif] GET f[/logo.gif] head[163]:200 send: 393 cf1 dis
srv[80] 85.17.24.66:44584 [3] listen
srv[80] 85.17.24.66:44584 [3] read: 306 of1[esp.gif] GET f[/esp.gif] head[164]:200 send: 2756 ...
srv[80] 85.17.24.66:44554 [3] disconnect
srv[80] 85.17.24.66:44584 [2] send: 1460 ...
srv[80] 85.17.24.66:44584 [2] send: 1460 ...
srv[80] 85.17.24.66:44584 [2] send: 895 cf1 dis
srv[80] 85.17.24.66:44577 [2] disconnect
srv[80] 85.17.24.66:44584 [1] disconnect
srv[80] 141.212.122.170:24336 [1] listen <--- а это кто-то другой залез из паутины :) University of Michigan College of Engineering http://141.212.122.170/ :)
srv[80] 141.212.122.170:24336 [1] read: 55 GET f[] of255[501.htm] of255[501.htm/index.htm] head[182]:501 dis
srv[80] 141.212.122.170:24336 [1] disconnect
SNTP: Set time: 0x559823a6
И картинка, что дает эксплорер:
Посмотреть вложение 667
Настройки маршрутизатора:
-Проброшен порт 80,
-Создан виртуальный сервер на резервный IP для модуля ESP-12E (192.168.1.200)
-Проверено с помощью сайта 2ip.ru наличие открытого порта 80 по моему статическому IP 109.172.104.47 при включенном модуле.

Короче что я сделал для проверки запросов:
1. Запустил для проверки сервер на компе из проги SocketTest (192.168.1.104:80).
2. Перенастроил виртуальный порт на маршрутизаторе с 192.168.1.200 на 192.168.1.104.
3. Зашел на этот порт с другого компа из локальной сети через браузер IE и скопировал запрос принятый прогой SocketTest.
4. Зашел на этот порт с другого компа, но по адресу моего статического IP (109.172.104.47) из локальной сети через браузер IE и скопировал запрос принятый прогой SocketTest.
5. Зашел на этот порт с другого компа, при условии, что этот комп подключен к интернету через другой шлюз (мобильный интернет), по адресу моего статического IP (109.172.104.47) через браузер IE и скопировал запрос принятый прогой SocketTest.
6. Р
езультат представляю ниже (запросы в той последовательности, что перечислял).
> New Client: 192.168.1.105
GET / HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: ru
User-Agent: Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 730 Dual SIM) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537
UA-CPU: ARM
Accept-Encoding: gzip, deflate
Host: 192.168.1.104
DNT: 1
Connection: Keep-Alive

> Server closed Client conection.


> New Client: 109.172.104.47
GET / HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: ru
User-Agent: Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 730 Dual SIM) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537
UA-CPU: ARM
Accept-Encoding: gzip, deflate
Host: 109.172.104.47
DNT: 1
Connection: Keep-Alive

> Server closed Client conection.


> New Client: 78.25.122.181
GET / HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: ru
User-Agent: Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 730 Dual SIM) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537
UA-CPU: ARM
Accept-Encoding: gzip, deflate
Host: 109.172.104.47
DNT: 1
Connection: Keep-Alive

> Server closed Client conection.

Как видно из спойлера все запросы идентичны.
Но модуль отвечает только по пунктам 2 и 3, а вот 4 нет...
 

pvvx

Активный участник сообщества
5. Зашел на этот порт с другого компа, при условии, что этот комп подключен к интернету через другой шлюз (мобильный интернет), по адресу моего статического IP (xxx.xx.x.x) через браузер IE и скопировал запрос принятый прогой SocketTest.
Тут могут быть нюансы... Сегодня, у меня, телефон через LTE/WCDMA что-то не хотел работать. Проходит только один пакет - первый. В итоге большие HTM не читаются. 404.htm показывает. Запрос web.cgi тоже. При запросе дампа к http://xxxxxx.asuscomm.com/web.cgi?hexdmpb0x60000000=256 - вылезает, а больше (типа =300) не проходит.
Но через проводно-опто инет всё ОК. С dhcp и Lwip из SDK пока не проверял. Проверялось на OpenLwIP - возможно имеется проблема стыковки с SDK 1.2.0...

Вам вопрос - а как и какой адрес распределяется модулю роутером? Я обычно фиксирую по MAC на роутере, чтобы он давал статический адрес модулю.
И вы не дали лог модуля из debug порта. Без него сложно что-либо сказать, т.к. не видно есть ли вообще запросы на модуль. В выше описанной "беде" лог показывал все запросы и так-же что какая-то беда с большими файлами...
 
Тут могут быть нюансы... Сегодня, у меня, телефон через LTE/WCDMA что-то не хотел работать. Проходит только один пакет - первый. В итоге большие HTM не читаются. 404.htm показывает. Запрос web.cgi тоже. При запросе дампа к http://xxxxxx.asuscomm.com/web.cgi?hexdmpb0x60000000=256 - вылезает, а больше (типа =300) не проходит.
Но через проводно-опто инет всё ОК. С dhcp и Lwip из SDK пока не проверял. Проверялось на OpenLwIP - возможно имеется проблема стыковки с SDK 1.2.0...

Вам вопрос - а как и какой адрес распределяется модулю роутером? Я обычно фиксирую по MAC на роутере, чтобы он давал статический адрес модулю.
И вы не дали лог модуля из debug порта. Без него сложно что-либо сказать, т.к. не видно есть ли вообще запросы на модуль. В выше описанной "беде" лог показывал все запросы и так-же что какая-то беда с большими файлами...
Как я уже писал для модуля IP зарезервирован по MAC на маршрутизаторе (192.168.1.200). А вот с логом пока что напряг (разводка платы такая), скорее всего на до на UART перекинуть отладочный лог на тот же, что и для прошивки использую.
WP_20150618_18_49_30_Pro.jpg
 
Последнее редактирование:

pvvx

Активный участник сообщества
Как я уже писал для модуля IP зарезервирован по MAC на маршрутизаторе (192.168.1.200). А вот с логом пока что напряг (разводка платы такая), скорее всего на до на UART перекинуть отладочный лог на тот же, что и для прошивки использую.
Отключите TCP2UART на Web странице и соедините выход Debug TX с выходом TX на модуле (если боитесь ошибки - соединяйте через резистор к примеру 100 Ом) Делов на 5 минут - достать паяльник и включить, да посмотреть и проверить соединяемые номера выводов :)
Но если паять влом, то можно дать команду
http://sesp8266/web.cgi?sys_ram0x3FF00028=1 и выходы TX сменятся местами.
Восстановить http://sesp8266/web.cgi?sys_ram0x3FF00028=0 или перезагрузкой.
 
Последнее редактирование:
Отключите TCP2UART на Web странице и соедините выход Debug TX с выходом TX на модуле (если боитесь ошибки - соединяйте через резистор к примеру 100 Ом) Делов на 5 минут - достать паяльник и включить, да посмотреть и проверить соединяемые номера выводов :)
Но если паять влом, то можно дать команду
http://sesp8266/web.cgi?sys_ram0x3FF00028=1 и выходы TX сменятся местами.
Восстановить http://sesp8266/web.cgi?sys_ram0x3FF00028=0 или перезагрузкой.
Сделал как сказали, вот логи:
Это попытка зайти через мобильный интернет:
srv[80] 78.25.121.170:23357 [1] listen
srv[80] 78.25.121.170:23357 [1] read: 411 of1[index.htm] GET f[/] head[201]:200 send: of2[menu.inc] cf2 of2[footer.inc] cf2 of2[vdd.inc] cf2 of2[time.inc] cf2 cf1 2176 dis
srv[80] 78.25.121.170:23357 [1] error -9
srv[80] 78.25.121.170:23357 [1] disconnect
srv[80] 78.25.121.170:11121 [1] listen
srv[80] 78.25.121.170:11121 [1] read: 411 of1[index.htm] GET f[/] head[201]:200 send: of2[menu.inc] cf2 of2[footer.inc] cf2 of2[vdd.inc] cf2 of2[time.inc] cf2 cf1 2176 dis
srv[80] 78.25.121.170:11121 [1] error -9
srv[80] 78.25.121.170:11121 [1] disconnect

Это - через локальную сеть:
srv[80] 192.168.1.104:62406 [1] listen
srv[80] 192.168.1.104:62406 [1] read: 439 of1[index.htm] GET f[/index.htm] head[201]:200 send: of2[menu.inc] cf2 of2[footer.inc] cf2 of2[vdd.inc] cf2 of2[time.inc] cf2 cf1 2176 dis
srv[80] 192.168.1.104:62407 [2] listen
srv[80] 192.168.1.104:62407 [2] read: 394 of1[style.css] GET f[/style.css] head[187]:200 send: 1231 cf1 dis
srv[80] 192.168.1.104:62408 [3] listen
srv[80] 192.168.1.104:62408 [3] read: 378 of1[logo.gif] GET f[/logo.gif] head[163]:200 send: 393 cf1 dis
srv[80] 192.168.1.104:62409 [4] listen
srv[80] 192.168.1.104:62409 [4] read: 377 of1[esp.gif] GET f[/esp.gif] head[164]:200 send: 2756 ...
srv[80] 192.168.1.104:62409 [4] send: 1460 ...
srv[80] 192.168.1.104:62409 [4] send: 1460 ...
srv[80] 192.168.1.104:62409 [4] send: 895 cf1 dis
srv[80] 192.168.1.104:62406 [4] disconnect
srv[80] 192.168.1.104:62407 [3] disconnect
srv[80] 192.168.1.104:62408 [2] disconnect
srv[80] 192.168.1.104:62409 [1] disconnect
 

pvvx

Активный участник сообщества
Сделал как сказали, вот логи:
Совпадает, с тем что описал выше - передает всего один пакет. На первое надо пробовать либу LwIP от SDK... Буду разбираться, но скорее всего уже во вторник, т.к. уеду по делам и отдохнуть от всего электрического :).
 
Совпадает, с тем что описал выше - передает всего один пакет. На первое надо пробовать либу LwIP от SDK... Буду разбираться, но скорее всего уже во вторник, т.к. уеду по делам и отдохнуть от всего электрического :).
Хорошо, тоже попробую разобраться.
 
Хорошо, тоже попробую разобраться.
Очень даже вероятно, надо будет проследить за стеком обработки.
Может быть есть смысл UDP использовать, правда придётся как то контролировать некоторые отсылки.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Использование LwIP либы и всего окружения от китай-SDK и манипуляции с nagle algorithm не помогли. В чем-то другом надо ковырять...
Честно говоря, совсем не понятно куда пакеты деваются, такое чувство, что они попросту разрушаются в интернете, и ответа не приходит, есть смысл пробнуть понаблюдать что со стороны клиента происходит.
 
Честно говоря, совсем не понятно куда пакеты деваются, такое чувство, что они попросту разрушаются в интернете, и ответа не приходит, есть смысл пробнуть понаблюдать что со стороны клиента происходит.
В общем вот что получилось:
Запросы.jpg
В первых трёх строчках - это запросы из локалки, а два последних - из интернета. Почему только 13байт принимает???
Далее лог отладки:
srv[80] 109.172.104.47:49200 [1] listen
srv[80] 109.172.104.47:49201 [2] listen
srv[80] 109.172.104.47:49200 [2] read: 515 of1[index.htm] GET f[/] head[201]:200 send: of2[menu.inc] cf2 of2[footer.inc] cf2 of2[vdd.inc] cf2 of2[time.inc] cf2 cf1 2178 dis
srv[80] 109.172.104.47:49200 [2] disconnect
srv[80] 109.172.104.47:49201 [1] read: 512 of1[style.css] GET f[/style.css] head[187]:200 send: 1231 cf1 dis
srv[80] 109.172.104.47:49239 [2] listen
srv[80] 109.172.104.47:49239 [2] read: 496 of1[logo.gif] GET f[/logo.gif] head[163]:200 send: 393 cf1 dis
srv[80] 109.172.104.47:49240 [3] listen
srv[80] 109.172.104.47:49240 [3] read: 495 of1[esp.gif] GET f[/esp.gif] head[164]:200 send: 2756 ...
srv[80] 109.172.104.47:49240 [3] send: 1460 ...
srv[80] 109.172.104.47:49240 [3] send: 1460 ...
srv[80] 109.172.104.47:49240 [3] send: 895 cf1 dis
srv[80] 109.172.104.47:49241 [4] listen
srv[80] 109.172.104.47:49241 [4] read: 466 of1[favicon.ico] GET f[/favicon.ico] head[202]:200 send: 810 cf1 dis
srv[80] 109.172.104.47:49201 [4] disconnect
srv[80] 109.172.104.47:49239 [3] disconnect
srv[80] 109.172.104.47:49240 [2] disconnect
srv[80] 109.172.104.47:49241 [1] disconnect

srv[80] 78.25.122.219:53593 [1] listen
srv[80] 78.25.122.219:58604 [2] listen
srv[80] 78.25.122.219:36000 [3] listen
srv[80] 78.25.122.219:36000 [3] read: 541 of1[index.htm] GET f[/] head[201]:200 send: of2[menu.inc] cf2 of2[footer.inc] cf2 of2[vdd.inc] cf2 of2[time.inc] cf2 cf1 2176 dis
srv[80] 78.25.122.219:53593 [3] error -9
srv[80] 78.25.122.219:53593 [3] disconnect
srv[80] 78.25.122.219:58604 [2] error -9
srv[80] 78.25.122.219:58604 [2] disconnect
srv[80] 78.25.122.219:36000 [1] disconnect

srv[80] 78.25.122.219:53593 [1] listen
srv[80] 78.25.122.219:58604 [2] listen
srv[80] 78.25.122.219:36000 [3] listen
srv[80] 78.25.122.219:36000 [3] read: 541 of1[index.htm] GET f[/] head[201]:200 send: of2[menu.inc] cf2 of2[footer.inc] cf2 of2[vdd.inc] cf2 of2[time.inc] cf2 cf1 2176 dis
srv[80] 78.25.122.219:53593 [3] error -9
srv[80] 78.25.122.219:53593 [3] disconnect
srv[80] 78.25.122.219:58604 [2] error -9
srv[80] 78.25.122.219:58604 [2] disconnect
srv[80] 78.25.122.219:36000 [1] disconnect
 
Сверху Снизу