Вверх ↑
Этот топик читают: Гость
Ответов: 655
Рейтинг: 18
#1: 2013-10-24 04:15:08 ЛС | профиль | цитата
Уже 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




карма: 0

0
файлы: 1code_32121.txt [3.1KB] [326]
Ответов: 2125
Рейтинг: 159
#2: 2013-10-24 11:52:40 ЛС | профиль | цитата
Если браузеру надо загрузить несколько файлов одновременно, он посылает запросы параллельно, в несколько потоков (обычно их количество ограничено 5-10).
TCP_Server не может обрабатывать несколько запросов одновременно, надо использовать TCP_ServerEx.
карма: 1

0
Гость
Ответов: 17029
Рейтинг: 0
#3: 2013-10-24 13:37:06 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2025-01-10 18:26:44
карма: 0

0
Ответов: 655
Рейтинг: 18
#4: 2013-10-24 20:31:01 ЛС | профиль | цитата
tsdima, справка по TCPServer_Ex в wiki очень скудная. Нашел старую тему, там пару примеров, вроде разобрался.
Есть только 1 вопрос..а ##add не используется что-ли? Ну в смысле новый экземпляр создается автоматически при подключении нового клиента?
карма: 0

0
Ответов: 1343
Рейтинг: 31
#5: 2013-10-24 20:33:59 ЛС | профиль | цитата
Gunnman писал(а):
##add не используется что-ли?


используется (зайди в компонент , выдели квадратик(не компонент сам , а саму область серую) и посмотри вкладку точки)
карма: 2

0
Ответов: 655
Рейтинг: 18
#6: 2013-10-24 20:44:46 ЛС | профиль | цитата
Rysik, да это я знаю) я имел ввиду новый экземпляр создается автоматически при подключении нового клиента или же надо как-то "ловить" новое подключение и под него через ##add создавать новый экземпляр?
карма: 0

0
Ответов: 1343
Рейтинг: 31
#7: 2013-10-24 20:46:36 ЛС | профиль | цитата
при подключении нового клиента идёт создание новой копии схемы

я так думаю тут оно автоматически идёт создание
поставь точку ##count и посмотри как реагирует точка add на копии схемы при действии с точкой и при конекте клиентов
карма: 2

0
Ответов: 655
Рейтинг: 18
#8: 2013-10-25 00:33:22 ЛС | профиль | цитата
С компонентом TCPServer_Ex вроде все получилось всем спасибо!
карма: 0

0
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)