Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Генерируем HTML-страницу на SIM300D...
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
mapic
Необходимо сгенерировать простенькую HTML-страницу с несколькими текстовыми строками на основе сервера SIM300D, а потом переодически просматривать эту страницу в браузере на удаленом ПК...

Вкратце опишу как все делаю: запускаю GPRS и сервер на SIM300D, читаю IP. Запускаю браузер на ПК и ввожу в строку адреса IP и порт GPRS-модема (например http://94.153.149.204:2020).

Получаю запрос от браузера:

GET / HTTP/1.1
User-Agent: Opera/9.27 (Windows NT 5.1; U; ru)
Host: 94.153.149.204:2020
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, imag
e/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Connection: Keep-Alive
REMOTE IP: 77.120.85.218

В ответ вывожу простенький HTML-код сгенерированый в дрим-вивере:

at+cipsend
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/
DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=DOS-720" />
<title></title>
</head>

<body>
HELLO WORLD !!!
</body>
</html>

SEND OK

Сообщение проходит но браузер ничего не показывает и продолжает "висеть". Остановка браузера тоже не помагает, содержимое страницы так и не отображается!

Пробовал и по "взрослому" добавлять перед HTML-кодом ответ серрвера (так как настоящие отвечают):

HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=UTF-8
Content-Length: 1350
Date: Wed, 03 Jun 2009 16:44:39 GMT
Server: GFE/2.0

Тоже не помагает... и где же могут быть "грабли"...?
YAM
Так должно быть 200 OK, а не 400 Bad Request
mapic
... да точно должно быть 200 ОК .... взял плохой ответ от сервера...

Но как я понял дело не в этом... потому как мне кажется HTML-страница должна приниматся браузером и без заголовка... скорее всего что то неверно с окончанием... кто знает какими символами должна заканчиватся HTML-страница <CR> <LF> или может еще какими то?

PS. Заметил что если передать два раза подряд HTML-код (без заголовка) и нажать в браузере кнопку стоп то отображается двойное содержимое страницы (тоесть то что мы передали два раза если посмотреть исходный текст в браузере)...? Если же передать HTML-код один раз и нажать стоп то браузер ничего не показывает и не принимает вообще даных (ето видно если посмотреть исходный текст страницы в окне браузера)...

...хотя заголовок наверное тоже важен, ведь в нем указывается общая длина передаваемого кода от сервера браузеру...
Rst7
В двух словах: минимум Вам нужно ответить:
Код
HTTP/1.1 200 OK
Content-Type: text/html
Connection: close
Cache-Control: no-cache

<HTML>...</HTML>


Пустая строка между последней строкой заголовка и началом собственно html-содержимого обязательна. Строки разделяются парой символов 13,10 ("\r\n").

А вообще - курите соответствующий RFC.
mapic
Заголовок помог... теперь сраница передается с первого раза, но кнопку остановки на браузере всеравно нужно нажимать что бы страница отобразилась!? Может в заголовке нужно еще и передать длину HTML-кода в байтах? - может быть через то что браузер не знает длины HTML-сообщения он продолжает ждать даные?

Также интересует нужно ли передавать символы 13,10 ("\r\n") после каждой строчки HTML-кода?
Rst7
Цитата
но кнопку остановки на браузере всеравно нужно нажимать что бы страница отобразилась!?


После того, как Вы просунули весь контент, необходимо закрыть сокет со стороны сервера.

Никаких лишних переводов строки в собственно контент вставлять не надо.
mapic
Попробовал сделать HTML-страницу посложнее несколько строк, с фоном, форматированием текста и др. получилось около 800 байт. Дело пошло лучше. После отправки заголовка и собствено самого HTML-кода, содержимое появляется в окне браузера, сразу же после подачи команды SEND. Но браузер продолжает загружать HTML-страницу (это видно по строке состояния). Обрыв соединения со стороны HTML-сервера приводит к тому что на Експлорере и Мазиле содержимое страницы исчезает "Не возможно отобразить страницу", у Оперы содержимое остается на экране и после разрыва соединения она самостоятельно продолжает попытки соединения и отправляет запросы на сервер...?

Может все таки в заголовке нужно отправить еще и длину HTML-контента, что бы браузер окончательно "успокоился" и перестал загружать страницу?
YAM
Цитата(mapic @ Jun 13 2009, 18:42) *
.................
Может все таки в заголовке нужно отправить еще и длину HTML-контента, что бы браузер окончательно "успокоился" и перестал загружать страницу?

Для HTML контента достаточно после того, как Вы отдали страницу просто закрыть соединение со стороны сервера... Вам об этом уже писали...
А вообще гляньте пример, ну хотя бы web сервера, реализованного на UIP.
Rst7
Цитата
Может все таки в заголовке нужно отправить еще и длину HTML-контента, что бы браузер окончательно "успокоился" и перестал загружать страницу?


Не нужно. Нужно сниффером глянуть на клиентской стороне, какие данные там реально летят. Есть мнение, что они неправильные.
mapic
Цитата(YAM @ Jun 14 2009, 16:54) *
Для HTML контента достаточно после того, как Вы отдали страницу просто закрыть соединение со стороны сервера... Вам об этом уже писали...
А вообще гляньте пример, ну хотя бы web сервера, реализованного на UIP.


... соединение закрываю! После этого содержимое (HTML-страница) в окне браузера вообще пропадает ("Невозможно подключится к удаленому серверу")??

Цитата(Rst7 @ Jun 14 2009, 19:04) *
Не нужно. Нужно сниффером глянуть на клиентской стороне, какие данные там реально летят. Есть мнение, что они неправильные.


...это как? а где взять соответствующую программу?
Rst7
Цитата
...это как? а где взять соответствующую программу?


Ключевое слово WireShark.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.