реклама на сайте
подробности

 
 
> Работа web-сервера, Демо-программа от olimex
Twen
сообщение Aug 2 2011, 12:27
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 7-02-09
Пользователь №: 44 543



Добрый день, имеется отладочная плата от Олимекс STM32 - P107, на сайте я скачал демо-программу работы веб-сервера http://olimex.com/dev/index.html , название файла Ethernet Demo software for EW-ARM 5.50.

Веб-сервер работает, но хотелось бы разобраться в алгоритме отображения веб-страниц...комментарий у программе не особо много...

Если, кто-то работал с веб-сервером пишите...
Спасибо.

Сообщение отредактировал Twen - Aug 2 2011, 12:29
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Twen
сообщение Aug 3 2011, 12:18
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 7-02-09
Пользователь №: 44 543



Можно узнать по поводу этой функции?

s->scriptpt - это выходит мы показываем, что мы передаем скрипт...кстати, скрипт - это и есть сам код страницы?

static
PT_THREAD(handle_script(struct httpd_state *s))
{
char *ptr;

PT_BEGIN(&s->scriptpt);


while(s->file.len > 0) {

/* Check if we should start executing a script. */
if(*s->file.data == ISO_percent &&
*(s->file.data + 1) == ISO_bang) {
s->scriptptr = s->file.data + 3;
s->scriptlen = s->file.len - 3;
if(*(s->scriptptr - 1) == ISO_colon) {
httpd_fs_open(s->scriptptr + 1, &s->file);
PT_WAIT_THREAD(&s->scriptpt, send_file(s));
} else {
PT_WAIT_THREAD(&s->scriptpt,
httpd_cgi(s->scriptptr)(s, s->scriptptr));
}
next_scriptstate(s);

/* The script is over, so we reset the pointers and continue
sending the rest of the file. */
s->file.data = s->scriptptr;
s->file.len = s->scriptlen;
} else {
/* See if we find the start of script marker in the block of HTML
to be sent. */

if(s->file.len > uip_mss()) {
s->len = uip_mss();
} else {
s->len = s->file.len;
}

if(*s->file.data == ISO_percent) {
ptr = strchr(s->file.data + 1, ISO_percent);
} else {
ptr = strchr(s->file.data, ISO_percent);
}
if(ptr != NULL &&
ptr != s->file.data) {
s->len = (int)(ptr - s->file.data);
if(s->len >= uip_mss()) {
s->len = uip_mss();
}
}
PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s));
s->file.data += s->len;
s->file.len -= s->len;

}
}

PT_END(&s->scriptpt);
}




Цитата
Разъяснений вплоть до уровня "нажмите эту кнопочку, потом вот эту" вряд ли дождётесь


Мне это и не нужно. Просто разбираться в программе, которая не полностью прокомментированы переменные не так и легко...просто хочется разобраться, уже пару дней разбираюсь...

Сообщение отредактировал Twen - Aug 3 2011, 12:39
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01362 секунд с 7
ELECTRONIX ©2004-2016