LINUX.ORG.RU

подскажите по libevent

 , ,


0

1

Братцы ткните носом. Разбираюсь с сервером evhttp из библиотеки libevent. Не могу найти пару функций в этой библиотеке:

1. определение IP адреса клиента

2. парсер строки GET запроса ( значение пар name и value)

Спасибо.



Последнее исправление: salik (всего исправлений: 1)

1. определение IP адреса клиента

evhttp_connection_get_peer()

2. парсер строки GET запроса ( значение пар name и value)

evhttp_parse_query_str()

Sorcerer ★★★★★
()
Ответ на: комментарий от salik

с парсингом разобрался. не могу победить функцию evhttp_connection_get_peer().

сейчас код такой:


struct evhttp_connection *evcon;
char **address;
ev_uint16_t *port;


evcon = evhttp_request_get_connection (req);
evhttp_connection_get_peer (evcon, address, port);

вылетает с ошибкой сегментации на функции evhttp_connection_get_peer.

Подскажите, где моя ошибка?

salik
() автор топика
Ответ на: комментарий от salik

Еще один момент. При использовании функции

evhttp_parse_query_str (uri, headers)
при компиляции выдает варнинг
warning: ‘headers’ may be used uninitialized in this function [-Wuninitialized]

Если запустить - вываливается с ошибкой сегментирования.

Пока инициализировал headers перед использованием по нубски:

headers = evhttp_request_get_input_headers(req);
evhttp_clear_headers(headers);
Так компилиться и работатет.

Подскажите, а как правильно это сделать (инициализировать headers перед использованием)?

struct evkeyvalq *headers;

salik
() автор топика
Ответ на: комментарий от salik

зачем ты пытаешься юзать указатели, которые указывают вникуда?

вот тебе выше уже показали, что если функция принимает ** то не нужно создавать _именно_ такой указатель, а создать объект и передать указатель на него. Этож грёбаные основы. Ну и семплов про либевент полно, хоть бы глянул как это делают.

anonymous
()
Ответ на: комментарий от anonymous

Таки я отгрёб свое :) Все, понял свою ошибку. Спасибо, направили на путь истинный. В том то и дело было, что использовал куски кода как из семплов.

salik
() автор топика
Ответ на: комментарий от salik

По честному повторил основы Си, про указатели и функции. По этой части вопросов не будет.

А теперь, не сочтите за наглость, ткните пожалуйста в пример реализации клиента на libevent.

salik
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.