接続されているすべてのクライアントに着信メッセージをブロードキャストする、単純な libevent ベースの TCP サーバーのサンプル コードを探しています。Web では、メッセージをエコー バックする TCP サーバーしか見つかりませんでした。
見つかった場合のエコーの例は、このページの下部にありますhttp://www.wangafu.net/~nickm/libevent-book/Ref8_listener.html
メッセージが接続されているすべてのクライアントにブロードキャストされるように、このサイトで提供されているコードを変更するのはそれほど難しくないと確信していますが、その方法はわかりません。
誰かが私にアドバイスできますか?
編集: はい、ある種のチャット サーバーです。私はこのようにsthを行う必要があると思われます:
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);
}
しかし、私はこれを機能させることはできません。