NAT の背後にある 2 つのクライアント間で P2P 接続を確立したいと考えています。動作させる方法を勉強したので、「UDPホールパンチング方法」を試してみたいです。
そう...
PHP でサーバーを作成しました。サーバーは、オンデマンドでクライアントに接続の詳細を送信できます (リモート IP、リモート ポートなど)。
例としてのソースコードはこちら: http://pastebin.com/FdiKMSFq
次に、サーバーに永続的に接続するクライアントを C# で作成し、別のクライアント情報について尋ねました。クライアントは、別のクライアントのリモート IP とリモート ポート (サーバーとの接続に使用される) を受け取り、接続を試みます。
完全なソース コードはこちら: http://pastebin.com/VUJyZivW
最初のステップ (接続して詳細を尋ねる) は問題ありませんが、クライアント (A) が別のクライアント (B) に接続してデータを送信すると (A->B)、クライアント B はデータを受信しません。
両方の IPEndPoint をポート 2000 で動作するように設定しましたが、とにかく動作しませんでした。
例:
- A: 192.168.1.11:2000、サーバーは 32.14.15.16:56666 を取得します
- B: 192.168.1.5:2000、サーバーは 32.99.15.16:56699 を取得します
- A は 32.99.15.16:56699 に接続してデータを送信しようとします