-4

p2p を使用して、インターネット上でファイル共有アプリを開発する必要があります。私は、p2p ベースのアプリを開発するための非常に大まかな考えを持っています。

5001 などの特定のポートで実行されている静的 IP を持つサーバーが 1 つあるとします。クライアントはサーバーに接続し、独自のパブリック IP を送信します。

質問 1

C# の助けを借りて、クライアントはどのようにサーバーに接続し、独自のパブリック IP を送信できますか? どのクラスを使用する必要がありますか?

サーバーがクライアントからIPを取得すると、保存されます。したがって、2 つのクライアントが接続すると、サーバーは 2 つの異なる PC の IP 情報を取得します。PC1 はサーバーに PC2 の IP を取得するように要求し、PC2 は PC1 の IP を取得するように要求します。したがって、PC1 と PC2 の両方が互いの IP を持っています。

質問 2

ここで問題は、どのように PC1 が PC2 に接続できるかです。接続するためにどのコードを書く必要がありますか?

質問 3

ここで問題は、PC1 が PC2 に接続できる場合、PC1 がファイルを PC2 に送信する方法です。

このタイプの P2P ベースのファイル共有アプリを開発するには、どのクラスを使用する必要があるか教えてください。

4

1 に答える 1

0

peer2peerに関しては、ポートフォワーディングが有効になっているPCが少なくとも1台必要です。つまり、pc1にリスナー/サーバーがあり、pc2にクライアントがある場合、pc1にポート転送が必要になります。

これは一般にHighID/LowIDと呼ばれ、ほとんどすべてのルーターに実装されているNATファイアウォールの症状です。少なくとも1つのポート転送がないと、2台のPCを接続する方法はありません。これは、転送がない限り、ルーターが着信TCPパケットにマップするローカルIPを認識しないためです。

System.Net.TcpClient使用できるクラスについては、以下をご覧ください。System.Net.TcpListener

于 2012-04-20T08:22:59.530 に答える