私はネットワークで何ができるかをよりよく理解したいと思っています。現在、何らかの方法で WiFi および/または 3G/4G を介して何らかの P2P 接続を実装したい Android アプリに取り組んでいます。そうすることで多くの困難が生じることは承知していますが、それでも、問題に取り組み始める方法を知りたい、または方向性を知りたい.
私はそれについてのアイデアを持っていました.NATトラバースのすべての面倒を回避できると思います.
Jim と John は両方ともサーバーに接続します。サーバーはそれらを同じボックスに入れ、互いのメッセージを中継します。ある時点で、サーバーは帯域幅の浪費に飽きてしまいます。彼は Jim に接続されたソケットと John に接続されたソケットを持っています。したがって、「どういうわけか」(おそらく魔法のように)、彼は to-John-Socket を Jim に渡し、その逆も同様です。
したがって、新しいシナリオ: ジムが来て、「やあ、サーバー、ジョンにソケットをくれ」と言います: サーバー: わかりました、彼が到着するまでここで待ってください。ジョン: サーバーさん、ジムにソケットをください。サーバー: ああ、そこにいるよ! ジム、ジョンのソケットを取って。ジョン、ジムのソケットを取って。またね!
ジムとジョンが自分の仕事をしている間、サーバーは小さな仕事に戻ります。
確かにこれほど単純ではないと思います。では、これをどのように行うべきですか?ある時点で NAT ゲートウェイをトラバースする必要がある場合、どうすればそれを行うことができますか (自分自身、ライブラリなしで) ?