2012-01-03 26 views
0

これは私のP2Pでの最初の経験であり、私はそのデザインに関するいくつかの助けが必要です。簡単なP2Pチャットアプリケーションの作成

私は単純なメッセンジャーアプリケーションを開発しています。私はすべてのユーザーが認証し、すべてのユーザーが到達可能なオープンポートをアナウンスするディレクトリサーバーを持っています。ディレクトリサーバーはユーザーとポートを管理しており、特定のユーザーのためにディレクトリサーバーに問い合わせることができます。この部分は完了です。 2番目の部分は私がP2Pであるべきだと思うチャットです。私はチャットを開始できるだけでなく、チャットの終点になることができます(クライアントとサーバーの両方)

どうやってP2Pを処理するのですか? 2つの異なるソケットを作成しますか?私が着信接続のためのTCP要求を聞いているものと、私がチャットを開始するためのTCP要求を送信する別のもの。

この場合、3つのソケット、1つはサーバーと話し、2つはP2Pが必要ですか?

+0

同じソケットで送受信できるはずなので、サーバーとの接続は1つで、チャットごとに1つの接続が必要です。 –

+0

'p2p'タグを参照すると、最近多くの人がこの正確な質問をしていることがわかります。ほとんどの人がC#で解決策を求めています。興味のない、これはコース/宿題から来ていますか?現在P2Pチャットに興味のある人の数は、このようなニッチな領域ではかなり高いです。 – halfer

+0

ロイ2つのソケットに同意します。実際には、ディレクトリソケットは更新のために定期的に開く必要があるだけなので、同時に1つしか必要ないかもしれません。サーバーへの接続をオープンにするという点では、永続的に開くためには非常に高額になります。 – halfer

答えて

0

P2Pに移行するには、Javaでコーディングする場合など、JXTAなどのフレームワークを使用することをお勧めします。ソケットを作成するだけでは十分ではないかもしれません。なぜなら、LANを越えて動作しているなら、NATトラバースなど、扱う必要がある複雑な問題があるからです。

中央ピア(サーバーの一部)があるようです。パブリックIPアドレスがある場合は、TURNのようなアーキテクチャを実装できます(ピアはこの中央ピアを介して通信します)。ピア間の直接接続が必要な場合は、STUNソリューションを探していますが、通信を円滑にするためには中央ピアが必要です。

TCP Stunは簡単ではありません。 UDPはそれほど複雑ではありません。あなたのNATに穴を開ける必要があります。さて、NATトラバーサルは必ずしも可能ではない(NAT自体に依存します)。この場合、バックアップソリューションはSTUNのものになります。

関連する問題