2011-06-29 45 views
0

我正在寻找一些简单的基于libevent的TCP服务器的一些示例代码,它将传入的消息传播到所有连接的客户端。在网上,我只找到回应消息的TCP服务器。Brodcast与Libevent的TCP服务器

如果一个回波例如发现是在本页面底部http://www.wangafu.net/~nickm/libevent-book/Ref8_listener.html

我相信,它不是那么难以改变本网站所提供的代码,使消息brodcast到所有连接的客户端,但我不知道如何。

有人能告诉我吗?

编辑:是的,某种聊天服务器。它接缝我需要做的某事像这样:

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); 
} 

,但我不能把这个工作...

+0

TCP服务器是否跟踪在任何给定时间连接到它的所有打开的TCP客户端?我认为管理所有这些连接需要更多的资源,而不是简单地在“听线”上发送消息。 – jp2code

+0

从查看您链接的示例代码,我猜*服务器可以选择记录什么设备正在监听它,只要在建立连接时收到错误就从监听器列表中删除该设备'accept_error_cb'。 “WangAFu”文章似乎已将您寻找的特定实现留给程序员。 – jp2code

回答

1

看来想要类似于聊天服务器的东西。一个例子是here。基本上,当您从一个连接接收数据时,您只需查看连接列表并将相同数据发送给每个连接(包括/不包括原始数据)。