質問: 現在TCPプロトコルを使いc#でメッセージのやり取りができるプログラムを書いています。それは完成したのですが、同じLAN内のPCとしか通信できません。 調べたら当たり前のことらしく驚いたのですが、グローバルIPどうし?で通信でメッセージのやり取りをしたいです。 自分のpc---[ルータ] ------------[ルーター]---相手のpc この場合ルータの設定などをする必要があるのでしょうか? たとえですが、プログラムだけで(沖縄にあるpc)と(北海道にあるpc)でメッセージのやり取りができるようにしたいです。 tcpプロトコルでなくhttpプロトコルなどを使えば、、、とかそういう問題なのでしょうか?
回答: こんにちは。 一般的な家庭用のルータはセキュリティのため、外側(WAN)から内側(LAN)への通信を遮断します。 ですので、「自分のPC」が送った要求は相手のルータまでは届きますが、相手のルータにとってそれはWAN側からの通信ですので「相手のPC」へ中継しません。 ですので、ルータを特定の通信だけはPCへ中継するよう設定する等が一般的な手法です。 他にWAN上にあるサーバを使って中継するような手法もありますが、結構難易度は高いです。