私は、接続されたすべてのクライアントに着信メッセージを配信する単純なlibeventベースのTCP-Serverのサンプルコードを探しています。ウェブ上で私は、メッセージを返信するTCPサーバしか見つけられませんでした。libeventを使ったBrodcast TCP-server
一つのエコーの例見つかったが、このページの下部http://www.wangafu.net/~nickm/libevent-book/Ref8_listener.html
上にある場合、私は、メッセージが接続されているすべてのクライアントにbrodcastされるように、このサイト上で提供されているコードを変更することがそのそれほど難しいことではないことを確信しているが、私方法を知らない。
誰かに助言してもらえますか?
EDIT:はい、チャットサーバーのようなものです。
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);
}
しかし、私は仕事にこれを入れカント...
TCP-Serverは、いつでも接続されているすべての開いているTCPクライアントを追跡しますか?私は、これらの接続をすべて管理するには、単純にメッセージを「リッスンワイヤー」にブロードキャストするよりも多くのリソースが必要だと思います。 – jp2code
あなたがリンクしたサンプルコードを見ると、サーバは、接続が確立されたときにどのデバイスがそれを聴いているのかを記録し、エラーが発生したときにそのデバイスをリスナのリストから削除するオプションを持っています'accept_error_cb'。 'WangAFu'の記事は、あなたがプログラマに求める特定の実装を残しているようです。 – jp2code