Трансляция TCP-сервера с libevent - PullRequest
0 голосов
/ 29 июня 2011

Я ищу пример кода мертвого простого TCP-сервера на основе libevent, который транслирует входящие сообщения всем подключенным клиентам. В Интернете я нашел только TCP-серверы, которые возвращают сообщения.

Один пример эха, если найден, находится внизу этой страницы http://www.wangafu.net/~nickm/libevent-book/Ref8_listener.html

Я уверен, что не так сложно изменить код, представленный на этом Сайте, чтобы сообщения передавались всем подключенным клиентам, но я не знаю как.

Может ли кто-нибудь посоветовать мне?

РЕДАКТИРОВАТЬ: Да, какой-то чат-сервер. Мне кажется, мне нужно сделать что-то вроде этого:

void server_read_cb(struct bufferevent *bev, void *data)
{
       struct evbuffer *input = bufferevent_get_input(bev);
       struct evbuffer *output = bufferevent_get_output(bev);

       char *mem = malloc(len); /* XXX: check for malloc failure */

       evbuffer_remove(input, mem, len);
       "for every connection conn" {
           /* XXX you'll need to implement a real connection list;
              the above isn't real C. */
               evbuffer_add(bufferevent_get_output(conn), mem, len);
       }
       free(mem);
}

Но я не могу заставить это работать.

1 Ответ

1 голос
/ 08 июля 2011

Кажется, вы хотите что-то похожее на чат-сервер. Одним из примеров является здесь . По сути, когда вы получаете данные от одного соединения, вы просто просматриваете список соединений и отправляете те же данные каждому (включая / исключая оригинал).

...