2016-05-18 8 views
1

私は、マッチメイキングプロセスであっても、サーバを使わずにお互いに接続する2つのクライアント(ピアツーピア)を必要とするプログラムを作成しています。両方のクライアントはすでに互いのパブリックIPとプライベートIPを知っています。一方または両方のクライアントがNATの後ろにいる可能性があります。私はIPv6に頼ることはできません。ランデブーサーバのないUDPパンチスルー

私が問題としているのは、あるクライアント(Aと呼ぶ)が、AのNATの穴をパンチし、すでにパンチされたBのNATを通過するもう一方の(B)にパケットを送信する必要があるということです。ただし、NATの背後にあるBのローカルポートは使用できないため、Aは、BがパンチスルーしたBのNAT上の外部ポートを知る必要があります。さらに、BはNATの背後からこのポートを識別できません。 Visual representation of my problem このポートを識別する方法はありますか、またはBにNATにどのポートを使用するかを伝えるだけですか?

ありがとうございます。

P.S.私は.NET Unityのバージョン2.0を使用しています。

P.P.S.あなたがTCPで動作するソリューションを持っているなら、私もそれを取るでしょう!

P.P.P.S.あるいは、Http以外のプロトコルもかなり!

答えて

1

2つのエンドポイントをネゴシエートするには、よく知られているパブリックサーバーが必要です。ここで

は、C#で、このコンセプトの良い実装です: https://github.com/7wingfly/P2Pchat

関連する問題