0

接続されているすべてのクライアントに着信メッセージをブロードキャストする、単純な 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);
}

しかし、私はこれを機能させることはできません。

4

1 に答える 1

1

チャット サーバーに似たものが必要なようです。一例はここにあります。基本的に、1 つの接続からデータを受信すると、接続のリストを調べて、同じデータを各接続に送信します (オリジナルを含む/除外します)。

于 2011-07-08T11:18:28.217 に答える