問題タブ [peer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
distributed - 公平なDHTの実施
多くのユーザーが 1 つのサーバーに接続し、ハッシュを使用してキーと値のペアを格納するインフラストラクチャを考えています。
このようなサーバーは多数存在し、それぞれが独自のユーザーのキーと値のペアを格納しています。キーが衝突しないことを前提としています。
サーバー S1 のユーザー U1 は、サーバー S2 に存在するキー K2 を持つオブジェクトを検索する可能性があります (ユーザーはまだこれを知りません)。キーを server_addr にマップするには、ある種の分散ハッシュ テーブルが必要なので、そのサーバーにオブジェクトを問い合わせることができます。
Tapesry、Chord など、このような DHT はたくさんあります。このフェアのようなシステムをどのように作成するかを考えていました。
たとえば、3 台のサーバーを備えたシステムでは、サーバー S1 に 1000 人のユーザーがいて、S2 に 2 人のユーザーがいて、S3 に 5 人のユーザーがいるとします。ユーザーがそれぞれ 10 個のオブジェクトを作成し、キー スペースを均一に分散すると仮定すると、サーバー S2 と S3 はそれぞれ約 3500 個のキーを格納します。
私は、S1 が DHT 内のキーの公平な共有に責任を持つ方法が必要です。
私が持っていたアイデアの 1 つは、監査システムのようなもので、各ピアが DHT に保存しているキーの数を他のすべての人に尋ね、そのキー スペースの一部に対しても責任があるかどうかを確認します。
ただし、これにより、各ノードの消費量を取得するために帯域幅が大量に使用されます。
他のアイデアはありますか?
bitcoin - ハードコーディングされたノードに接続した後、ビットコイン ピア検出はどのように機能しますか?
私はビットコインのソースコードをいじくり回しておりtestnet
、次の変更を行ったモードでのピア発見メカニズムの正確な動作を理解しようとしています:
bitcoind を強制的にフォールバックさせてハードコードされたノードに接続するために、DNS シード検出を無効にしました。
ハードコードされたデフォルトのノードを既知の 4 つのアドレスに変更しました。A、B、C、D としましょう。これらは常にオンラインであることを確認しています。
ここで、bitcoind クライアント (E と呼びます) を実行すると、A、B、C、または D のいずれかに接続され、同じ修正バージョンの bitcoind が実行されます。最初に接続するハードコーディングされたノードからピアアドレスを取得し、メッセージを交換getaddr
しaddr
ますが、その後どのように処理されるかはわかりません。次のクエリがあります。
a. ノードがフォールバックしてハードコードされたノードに接続する場合、私の場合のようにハードコードされたノードの1つだけに接続することになっていますか、それとも複数のハードコードされたノードに接続できますか?
b. メッセージを介してピア アドレスを取得した後addr
、ノード E はいつそれらのピアへの接続を開始しますか?
可能であれば、関連するコード ファイル/セクションを教えてください。ありがとう
javascript - UDP マルチキャスト システム
ピア ツー ピア アーキテクチャとマルチキャスト通信を使用する分散情報システムを作成しようとしています。
まずはマルチキャスト通信の実装から。私はそれをしたことがないので、なぜ正しく機能しないのか理解するのが難しいいくつかの問題があります.
これが私がなんとかしたことです:
サーバ
クライアント
サーバーとクライアントを起動すると、すべてが機能します。server.js からのメッセージが正常に client.js に送信されます。
問題
複数のクライアント (ノード) が必要な場合に問題が発生します。将来的には、すべてのクライアント (ノード) に、マルチキャストを使用してすべてのクライアントから情報を送信することを許可しないという間違いを要求したいと思います。
上記のコードを使用すると、同時に 2 つのクライアントを開いて、両方のサーバーからメッセージを受信することができません。
複数のクライアントに接続しようとすると、次のエラーが表示されます。
問題は、同じコード (client.js) を同じポートと他のパラメーターで 2 回使用していることだと理解しています。より多くのクライアントでマルチキャストを使用して (server.js 経由で) 送信し、成功したメッセージを受信するために私が犯している間違いは何ですか?
c# - ピア ツー ピア ファイル共有のためにファイルを UDP パケット サイズのチャンクに分割する最良の方法は?
私は P2P ファイル共有プログラムに取り組んでおり、ファイルを少しずつ渡すために、アップロードされたファイルを何らかの方法で分割する必要があります。これで、ファイルを小さなファイルに分割し、C# Stream クラスを使用してフォルダーに配置するプログラムを作成し、それを再構築することもできます。ただし、非効率的で時間がかかります。要求されたファイルに応じてオフセットを使用してストリームからデータを読み取り、保存せずに送信することを考えました。ただし、データが順番に送信されないため、正しい順序で受信側に追加する方法がわかりません。
余談ですが、bitTorrent はどのようにしてそのような機能を実現しているのでしょうか?
ありがとう
express - peer.js は http では機能していませんが、https では機能していませんか?
このhttp://cdnjs.cloudflare.com/ajax/libs/peerjs/0.3.14/peer.js を使用すると、次のエラーが発生しました
は HTTPS 経由でロードされましたが、安全でないスクリプト ' http://cdnjs.cloudflare.com/ajax/libs/peerjs/0.3.14/peer.js ' を要求しました。このリクエストはブロックされました。コンテンツは HTTPS 経由で提供する必要があります。
https://cdnjs.cloudflare.com/ajax/libs/peerjs/0.3.14/peer.jsを追加した後、 与え始めました
HTTPS 経由で読み込まれましたが、安全でない XMLHttpRequest エンドポイント '0.peerjs.com:9000/c03lztxhq78vkj4i/…; を要求しました。このリクエストはブロックされました。コンテンツは HTTPS 経由で提供する必要があります。
connection - wget : redhat linux でのピアによる接続のリセット
コマンドを使用してリモートsoa
p URLにアクセスしようとしていますが、時々以下になります。以下のエラーの理由は何ですか。応答を期待していますが、代わりにエラーを下回っています。wget
RedHat linux
Exception
HTTP 200
よろしく、ジェイ
qt - Qt/C++ : リモート PC (通信相手) の MAC アドレスを取得するには?
私は Windows 7 で Qt5 を使用しています。
私のアプリケーション ( TCP サーバー) では、現在 QTcpSocket クラスのいくつかのメソッドを使用し
てQAbstractSocket::peerAddress()
います。
-ピア ポートQAbstractSocket::peerPort()
を取得するため。
通信相手のMAC アドレスも取得したいと思います。
これは、カスタム プロトコルを使用せずに (つまり、アプリとピアの間でカスタム メッセージを交換する必要なく) 可能ですか? はいの場合、どのように?
レイト編集:数か月前に実装した非常に優れたソリューションがあります。その間にテストしましたが、100% 完璧に動作します。楽しみ :)