1

私はかなり単純な質問です。次のモデルに従って、2 つのクライアント間の直接接続を使用せずに (クライアントのファイアウォールでポートを開くことなく) データを送信できるシステムを実装しました。

クライアント 1 ------> サーバー ------> クライアント 2 または クライアント 1 <------ サーバー <------ クライアント 2

正常に動作しているこのモデルに問題はありません。問題は、クライアントからデータを受信して​​すぐに次のデータに転送する必要があるため、サーバーのオーバーヘッドが大幅に増加することです。

私の質問: クライアント間でデータを送信するより高速な方法はありますか? または、クライアント間の直接接続を使用せずに、クライアントから別のクライアントにデータを送信しますか?

4

2 に答える 2

1

一元化されたサーバーの助けを借りて、クライアント間の直接接続を確立することは可能ですが、簡単ではありません。これはNatTraversalと呼ばれ、「偽の」UDPパケットを使用してファイアウォールに穴を開けることによって機能します。この技術はSkypeによって開拓されました(または少なくとも最前線に持ち込まれました)。
リンクとその仕組みの一般的な概要については、Wikiの記事を参照してください。

于 2012-05-24T16:31:31.730 に答える
0

1 - あなたの質問は c/c++/winsock とは何の関係もないようです。

2 - 負荷が増加するにつれて、サーバーをスケールアップするだけで済みます (ポイント ツー ポイント接続を試みる非常に複雑なクライアントを作成するのではなく)。

于 2012-05-24T16:28:30.403 に答える