2011-06-29 5 views
0

私は、接続されたすべてのクライアントに着信メッセージを配信する単純な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); 
} 

しかし、私は仕事にこれを入れカント...

+0

TCP-Serverは、いつでも接続されているすべての開いているTCPクライアントを追跡しますか?私は、これらの接続をすべて管理するには、単純にメッセージを「リッスンワイヤー」にブロードキャストするよりも多くのリソースが必要だと思います。 – jp2code

+0

あなたがリンクしたサンプルコードを見ると、サーバは、接続が確立されたときにどのデバイスがそれを聴いているのかを記録し、エラーが発生したときにそのデバイスをリスナのリストから削除するオプションを持っています'accept_error_cb'。 'WangAFu'の記事は、あなたがプログラマに求める特定の実装を残しているようです。 – jp2code

答えて

1

を使用すると、チャットサーバに似た何かをしたいようだ:それは私はこのようなSTHを行う必要があり縫い目。 1つの例はhereです。基本的に、1つの接続からデータを受信すると、接続のリストを調べ、同じデータをそれぞれに送信します(元のデータを含む/除外します)。

関連する問題