- 締切済み
P2P通信について あいまいな質問ですが・・
ネットを通じてデータのやりとりをするプログラムを作りたいとおもっています。 プログラミング言語はHSPというものを使っています。 数年前挑戦したときは、 無線LANを介さない親機PC同士ならばネットを通じて通信できたのですが、 受信側が無線LANの子機だったときは、 受信側のIPアドレスがローカルネットワーク上のものとインターネット上のものと2種類になってしまって、 データを送信する際に送信先として親機のアドレスを指定しても受信したい子機まで届かないし、 子機のアドレスを指定しても、それはローカル上でのものですのでもちろん意味がありませんでした。 この問題を解決するにはどういう風な構造のプログラムをかけばいいのでしょうか? ずごくあいまいですが、ヒントのようなものでかまいませんので教えてください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- noranuko
- ベストアンサー率46% (620/1332)
端末A--<インターネット>---端末B ならOKだけど、 端末A--<インターネット>---無線親機--<無線LAN>--端末B だとつながらない、ということですね。 これは基本的にプログラムがどうこうと言うより、 ネットワーク側の問題です。 具体的には、この無線親機はルータとして動作しており、 ここでNATが掛かるようになっています。 (端末Bは親機のグローバルIP経由でインターネットにアクセスする方式。 親機-端末B間はローカルIPで通信する。) この場合、端末Bからに端末Aにアクセスする分には何も問題ないのですが、 端末Aから端末Bにアクセスする場合は、端末Aは無線親機のグローバルIPしか わかりませんので通信することができません。 そのため、一工夫する必要があります。 一般によく使われるのは「ポートフォワーディング」と呼ばれる方法です。 「ポート開放」と呼ばれることもあります。 これは無線親機のxxx番ポートにアクセスがあったら、 ローカルIPアドレスのyyy番ポートに転送する、 という機能です。 これを親機に設定しておけば、端末Aは無線親機のグローバルIPにアクセスすることで 通信可能になります。 もしプログラム的に制御したい、という場合だとUPnPに対応した無線親機を利用して、 UPnP経由でルータを操作してポートフォワーディングする、という方法が取れます。