web-dev-qa-db-ja.com

自分のP2Pソフトウェアを作成するにはどうすればよいですか?

どうすれば自分のナップスターを作ることができますか?これらのp2pプログラムはどのライブラリを使用していますか?私はソケットプログラミングの概念にあまり精通していません。 Qt4を使用してp2pプログラムを作成できますか?

私はナップスターの時代からこの質問について疑問に思っていました。

次の「bitorrent」をどのように作成しますか?これは、同様のソケットライブラリを使用することによるものですか?

p2pテクノロジーの最新情報は何ですか?ニュースサイトはありますか? p2pの将来の見通しは?

21
wefwgeweg

P2PまたはPeer-to-Peerは、主にその構造そのもののために、作成するのが非常に難しいタイプのプログラムです。ほとんどのインターネットアプリケーションはクライアントサーバーです。これは、接続できることがわかっている固定サーバーを用意するだけで、多くの問題が解決されるためです。結局のところ、それは多かれ少なかれNapsterが行ったすべてであり、ファイルにインデックスを付け、現在誰がそれらをホストしているかを示しただけです。

P2Pソフトウェアを作成する際のもう1つの問題は、自分で開発すると、仮想コンピューターを多数作成したとしても、テストするピアがほとんどなくなることです。 00人のユーザーにスケーリングしてテストするのは難しいでしょう。

ただし、最初のステップでは、適切な言語でプログラミングすることを学ぶ必要があります。C++やC#のようなものは、テクノロジーを学ぶためのコンソールアプリケーションとして作成するだけかもしれません。

次に、ファイルの操作方法を学びます。ものを保存できない場合はあまり使用されません。

次にネットワーキング。ファイルの転送を理解するためだけに、クライアントサーバーのセットアップから始めます。ファイルを提供するサーバーアプリとそれをダウンロードするクライアントアプリを作成します。次に、それを1つのサーバーにスケーリングして、多くのクライアントにファイルを提供します。

最後のステップは、クライアントとサーバーをマージして、ピアがファイルをさらにダウンロードすると、サーバーになり始め、他のクライアントがそこからダウンロードできるようにすることです。

必要に応じて、GUIについて考えることができます。

16
thecoshman

Napsterの動作方法をピアツーピアで共有することは、ファイルを共有する人がたくさんいる場合にのみ意味があります。これは少し鶏が先か卵が先かという問題ですが、すべてはこれに帰着します。誰も使用しないネットワークを誰も使用しません。ソーシャルネットワークなどでも同じです。

そうは言っても、Qt4には、インターネットを介した通信の基盤であるUDPとTCPをサポートするネットワークモジュールが含まれています。利用可能なドキュメントとサンプルコードがあります ここ

最後の質問ですが、P2Pの未来は痛みと苦しみに満ちていると思います。ビッグコンテンツは、音楽や映画の共有という、p2pネットワーキングで最もよく使用される「機能」の後にあります。あなたの意見は異なるかもしれません。

7
Wander Nauta

次のリンクを見つけました- http://en.wikibooks.org/w/index.php?title=The_World_of_Peer-to-Peer_(P2P)/ Building_a_P2P_System

まだ完成していませんが、独自のP2Pネットワークを設計または作成する際に考慮すべき点がわかります。

3
whihathac

もし私があなたなら、Frostwireのような非常に人気のあるP2Pプログラムのソースコードをダウンロードするでしょう。 sourceforgeにはたくさんのソースコードがあります。すぐにテスト可能な完全に実行されているプロジェクトですべてがどのように組み合わされるかを確認することほど良いことはありません。完全に機能するコードは、学ぶのに最適です。

http://sourceforge.net/projects/frostwire/

http://shareaza.sourceforge.net/

あなたがあなたの前に困難な仕事を見ると...あなたはもうそれをしたくないかもしれません。私はいくつかのより人気のあるもののソースコードを簡単に検索しただけですが、FrostwireはおそらくLimewireの次に最も使用されています。 P2Pについて警告したときに、何千もの顧客のマシンからそれを削除しました(彼らの子供たちはLinux ISOをダウンロードしていません):)

Oooo ...私はちょうどこれの日付に気づきました。ええと、私はすでにこれをタイプしました、そしてあなたがプロジェクトに取り組み始めたことがあれば、私はあなたがまだそれに取り組んでいると確信しています:)

2
PerryCS