1

私は、2 つのクライアント (ピアツーピア) がサーバーをまったく使用せずに相互に接続する必要があるプログラムを作成しています。両方のクライアントは、互いのパブリック IP とプライベート IP を既に知っています。1 つまたは両方のクライアントが NAT の背後にある可能性があります。IPv6 に頼ることはできません。

私が直面している問題は、1 つのクライアント (A と呼びましょう) が、A の NAT に穴を開け、既に穴が開いている B の NAT を通過するパケットを別の (B) に送信する必要があることです。ただし、NAT の背後にある B のローカル ポートは使用できないため、B がパンチスルーした B の NAT 上の外部ポートを A が認識している必要があります。さらに、B は、NAT の背後からこのポートを識別することができません。 問題の視覚的表現 このポートを識別する方法はありますか、または単に B に使用するポートを NAT に通知させる方法はありますか?

前もって感謝します。

PS Unity が使用する .NET のバージョン、約 2.0 を使用しています。

PPS TCP で動作するソリューションがある場合は、それも使用します。

PPPS または Http 以外のほぼすべてのプロトコル!

4

1 に答える 1

1

2 つのエンドポイント間でネゴシエートするには、既知のパブリック サーバーが必要です。

C# でのこの概念の適切な実装は次のとおりです: https://github.com/7wingfly/P2Pchat

于 2016-06-26T15:39:18.653 に答える