Уже 4й день пытаюсь наладить схему.
Алгоритм работы такой:
1) При подключении выдаем страницу (в данном примере home.html) браузеру.
2) Браузер загружая страницу шлет серверу GET запросы на получение контента (в данном примере CSS, JS, JPEG, GIF)
3) Запросы поступают в порт сервера, сервер производит поиск блока GET / HTTP/1.1 (например GET /style.css HTTP/1.1)
4) После нахождения блока производится поиск файла в каталоге, определяется его MIME тип, длинна и формируется ответ странице с которой пришел запрос в виде:
HTTP/1.1 200 OK
Content-Length: 3490
Content-Type: text/css
Connection: close
данные запрашиваемого файла.
Вроде все работает, но работает странно, а именно:
Не всегда весь контент страницы полностью отображается в браузере, например картинки - то отображаются, то нет.
Причем заметил такую странность: если обращаться к серверу через "localhost:178" то из 10 запросов 2-3 будут удачными (имею ввиду что весь контент загрузится нормально)
Если обращаться к серверу по IP (НЕ по loopback) например в моем случае 192.168.0.10 то из 10 запросов 0-1 будут удачными и весь контент загрузится нормально.
Что было предпринято прежде чем писать на форум:
1) Перелопатил википедию на предмет HTTP заголовков и статусов состояний web сервера.
2) Поставил HTTP Analyzer с помощью него посмотрел какие запросы получает от браузера и какие ответы отправляет локальный Apache
3) Посмотрел какие запросы и ответы при обращении к серверам google, yandex и т.д.
4) Проверил схему, правильность составления ответов
5) Пробовал менять заголовки и их значения Connection: Close, Keep-Alive: timeout=0, max=100, Connection: keep-alive
6) Пробовал разные браузеры (Chrome,IE)
7) Менял порт сервера и сетевые настройки
8) Удалял Apache
9) Удалял драйвера захвата пакетов WinCap
10) Удалял HTTP Analyzer
11) Пробовал другие шаблоны сайтов
12) Проверял правильность Content-type:
13) Пробовал скармливать браузеру другие (отличные от 200 ОК) статусы состояний (100,102,206)
14) Пробовал отдавать контент браузеру хранимый в компоненте MemoryStream (исключал задержки при чтении файла с диска)
15) Ковырял файлы шаблонов (html,css) менял пути к контенту
Выбился из сил..4й день до 4х утра пытаюсь разобраться и побороть глюки самодельного веб сервера.
ОЧЕНЬ прошу помощи!! Подскажите что не правильно делаю?
Схема:
code_32121.txt
ссылка на используемый шаблон сайта http://forum.hiasm.com/forum_serv.php?q=56&id=3617
Схема очень простая, используемый шаблон сайта тоже.
Сайт должен лежать по пути C:123site
Этот топик читают: Гость
Ответов: 655
Рейтинг: 18
|
|||
карма: 0 |
| ||
файлы: 1 | code_32121.txt [3.1KB] [326] |
Ответов: 2125
Рейтинг: 159
|
|||
Если браузеру надо загрузить несколько файлов одновременно, он посылает запросы параллельно, в несколько потоков (обычно их количество ограничено 5-10).
TCP_Server не может обрабатывать несколько запросов одновременно, надо использовать TCP_ServerEx. |
|||
карма: 1 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 3 раз(а), последний 2025-01-10 18:26:44 |
|||
карма: 0 |
|
Ответов: 655
Рейтинг: 18
|
|||
tsdima, справка по TCPServer_Ex в wiki очень скудная. Нашел старую тему, там пару примеров, вроде разобрался.
Есть только 1 вопрос..а ##add не используется что-ли? Ну в смысле новый экземпляр создается автоматически при подключении нового клиента? |
|||
карма: 0 |
|
Ответов: 1343
Рейтинг: 31
|
|||
Gunnman писал(а): ##add не используется что-ли?используется (зайди в компонент , выдели квадратик(не компонент сам , а саму область серую) и посмотри вкладку точки) |
|||
карма: 2 |
|
Ответов: 655
Рейтинг: 18
|
|||
Rysik, да это я знаю) я имел ввиду новый экземпляр создается автоматически при подключении нового клиента или же надо как-то "ловить" новое подключение и под него через ##add создавать новый экземпляр?
|
|||
карма: 0 |
|
Ответов: 1343
Рейтинг: 31
|
|||
при подключении нового клиента идёт создание новой копии схемы
я так думаю тут оно автоматически идёт создание поставь точку ##count и посмотри как реагирует точка add на копии схемы при действии с точкой и при конекте клиентов |
|||
карма: 2 |
|
Ответов: 655
Рейтинг: 18
|
|||
С компонентом TCPServer_Ex вроде все получилось всем спасибо!
|
|||
карма: 0 |
|
8