![]() |
|
Модераторы: feodorv |
![]()
|
|
| Gwynbleiddd |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 25.3.2008 Репутация: нет Всего: нет |
Добрый день.
Возник вопрос, решение найти не получается. Необходимо принять запрос от клиента типа GET, разбить его на составные части (распарсить) (User-Agent, Accept и т.п.), записать все части в структуру, затем при необходимости модифицировать отдельные части этого запроса и, наконец, послать серверу. C приёмом, разбивкой запроса на части и записью в структуру вроде вопросов нет. Не понимаю как теперь собрать заново модифицированный запрос и отправить его серверу. Допустим, вот есть запрос:
Есть структура, в которую мы по частям записали весь запрос.
Содержание структуры следующее
Как теперь послать её серверу? Заранее Спасибо |
||||||
|
|||||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
А в чём, собственно, проблема? Например, можно собрать запрос согласно спецификации HTTP/1.1 в один буфер, и этот буфер отослать серверу. Буфер можно заказать (alloc etc), можно и определить фиксированного размера (поля-то в Вашей структуре фиксированы по размеру, нужно будет только учесть размер текста заголовков c ':' и ' ', \r\n на каждый заголовок и \r\n\r\n на самый конец запроса). Маловато для команды, уже простой POST не влезает... Нужна только главная страница сайта, или что-то ещё внутри него? Добавлено @ 00:23 Вот кусок моего кода на Си, реализующего формирование запроса (через буфер переменной длины):
Это сообщение отредактировал(а) feodorv - 20.2.2012, 00:25 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 1 Всего: 459 |
Если не важен строго С, то можно сделать так
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
snprintf
|
|||
|
||||
| Gwynbleiddd |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 25.3.2008 Репутация: нет Всего: нет |
Спасибо большое за ответы.
1. Вчера долго соображал как передать запрос, который хранится в структуре. Сегодня утром пришла мысль "Зачем передавать структуру, когда можно функциями strcat "склеить" все поля запроса в один буфер и просто передать этот буфер?" Утро вечера мудренее, сегодня именно так попробую 2. Размеры полей структуры писал "на глаз", т.к. сейчас работал с определённым запросом и главное было модифицировать и послать его. Так сказать, пробная версия. 3. Сейчас посмотрю код на формирование запроса, надеюсь поможет ) 4. Нужно именно на Си, С++ не подходит |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |