1

私はネットワークで何ができるかをよりよく理解したいと思っています。現在、何らかの方法で WiFi および/または 3G/4G を介して何らかの P2P 接続を実装したい Android アプリに取り組んでいます。そうすることで多くの困難が生じることは承知していますが、それでも、問題に取り組み始める方法を知りたい、または方向性を知りたい.

私はそれについてのアイデアを持っていました.NATトラバースのすべての面倒を回避できると思います.

ハンドシェイク後、ソケット自身の転送

Jim と John は両方ともサーバーに接続します。サーバーはそれらを同じボックスに入れ、互いのメッセージを中継します。ある時点で、サーバーは帯域幅の浪費に飽きてしまいます。彼は Jim に接続されたソケットと John に接続されたソケットを持っています。したがって、「どういうわけか」(おそらく魔法のように)、彼は to-John-Socket を Jim に渡し、その逆も同様です。

したがって、新しいシナリオ: ジムが来て、「やあ、サーバー、ジョンにソケットをくれ」と言います: サーバー: わかりました、彼が到着するまでここで待ってください。ジョン: サーバーさん、ジムにソケットをください。サーバー: ああ、そこにいるよ! ジム、ジョンのソケットを取って。ジョン、ジムのソケットを取って。またね!

ジムとジョンが自分の仕事をしている間、サーバーは小さな仕事に戻ります。

確かにこれほど単純ではないと思います。では、これをどのように行うべきですか?ある時点で NAT ゲートウェイをトラバースする必要がある場合、どうすればそれを行うことができますか (自分自身、ライブラリなしで) ?

4

1 に答える 1

0

あなたが試みていることは達成可能だと思いますが、ゼロから始めるのは確かに難しく、時間がかかります。私はネットワーク プログラミングの専門家ではありませんが、複雑な問題が発生することを十分に理解しています。

ネットワーク プログラミングの背景情報が必要な場合は、UNIX に詳しくなくても、Unix Network Programmingという本をお勧めします。これは非常に技術的で詳細な C コードですが、ソケットのアイデアが UNIX に由来するため、ソケットなどの非常に優れた背景を提供します。

私が似たようなことをしているとしたら、ここにリストされているようなオープンソース プロジェクトやYahoo Messenger SDKを調べてみたくなるでしょう。「オープンソースp2p」をグーグルで検索すると、いくつかのポインターも得られる可能性がありますが、その多くはC / C ++にあると思います。

于 2012-06-28T11:30:15.830 に答える