как заставить event_base_loop работать непрерывно

Я пытаюсь создать программу, которая читает данные дескриптора файла при обратном вызове, сгенерированном событием. но как только он читает данные, он выходит, то есть event_base_loop () запускается только один раз, когда я хочу, чтобы он запускался снова, когда он читает данные. Прямо сейчас я выполняю его, используя глобальное событие, а затем снова вызываю add_event () в функции обратного вызова.

 struct event *ev1;    //this is the global event variable
void Cb(evutil_socket_t fd, short what,void * arg)
{
char buffer[256];
int rc= recv(fd,buffer,sizeof(buffer),0);
printf("DATA = %s\n",buffer);
event_add(ev1,NULL);
}

void Create_UDP_Socket_Event(int fd)
{
struct event_base *base = event_base_new();
base = event_base_new();
ev1 = event_new(base, fd,EV_READ, cb ,(char *)"");
event_add(ev1,NULL);
int res=event_base_loop(base,0);
}

Поскольку я должен сделать динамический код, который будет иметь несколько сокетов udp, поэтому я не могу использовать этот подход, я использую fedora 17, и мой компилятор g ++ (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2)

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector