• 締切済み

チャットプログラミング

簡単な接続型チャットプログラムを作っています。 サーバとクライアントをTCPを使って接続し、1対1でメッセージを送りあうというものなのですが、 自宅にPCが一台しかないのでサーバ、クライアントを同じPCで起動してテストしています。 クライアントで接続相手を指定するとき、自PCのローカルアドレスを入力すると、正常に動作するのですが、 グローバルアドレスを入力すると正しく接続できません。 ポート開放についてはhttp://www.akakagemaru.info/port/tcpport.phpのサイトで確認済みです。 パーソナルファイアウォールの設定も済んでいるはずです。 どこがいけないのでしょうか? <環境> Windows Vista VC++ EE

みんなの回答

  • sho1get
  • ベストアンサー率57% (20/35)
回答No.3

もしルータを使用しているのであれば、NAPT(静的IPマスカレード)が機能しているため、通信できないと思います。 宅内LANではプライベートIPアドレスを使用していますが、インターネットに出ていくときは、グローバルIPアドレスに変換されて出ていきます。 そこで、宅内ルータはプライベートIPアドレスとグローバルIPアドレスの対応表を内部で持ち合わせていますが、宛先を宅内ルータのWAN側に割り当てられたグローバルIPアドレスに指定すると、そのパケットをどのプライベートIPアドレスにルーティングするのかが分からなくなってしまします。 そこで、静的IPマスカレードと言う機能を利用し、インターネット側からのポートXXXX番に送られてきたパケットは自動的にプライベートIPアドレスXXX.XXX.XXX.XXXに転送するという設定をあらかじめしておけばできるかもしれません。 静的IPマスカレード(NAPT)は現在、市販されているルータにも備わっているので、確認してみてはどうでしょう?

  • S117
  • ベストアンサー率40% (18/45)
回答No.2

そもそもそのテストは本当に必要でしょうか。 実際にはあまり想定できない方法のテストですし(エンタープライズ用途のルーターを使う)、自分のルーターから戻ってくるだけですので、インターネットを挟んだテストとは言い難いです。 知人に協力してもらうなりして、実際にインターネット経由のテストをした方がいいでしょう。

kerokk
質問者

お礼

ご回答ありがとうございます。 もっともなご指摘だと思います。 ただ成功するはずだと思ってテストしたら失敗したので、 その原因が知りたかっただけです…。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

多分ルータが安物なのでしょう。 構成は以下のようなものだと思います。 自PC |192.168.0.100 |(ハブなど) |192.168.1.1 ブロードバンドルータ |xxx.xxx.xxx.xxx |(ADSLなど) | ISP | インターネット  ここで、安物のブロードバンドルータはインターネットからのxxx.xxx.xxx.xxxに対するアクセスは192.168.1.100に転送しますが、自PCからxxx.xxx.xxx.xxxへのアクセスは転送してくれません。その機能が無いからです。ネットカフェなどを用いてインターネット側からアクセスしたらつながるという場合はほぼ間違いないでしょう。  YAMAHAのRTX1000などならできます。安いものだと本当にお手ごろ価格(5万円~7万円)で大変お求めやすくなっております(あくまでもエンタープライズ用途に耐えられるレベルの製品として安いという意味です)。  1万ちょっと程度のブロードバンドルータではできないと思いますね。

kerokk
質問者

お礼

ご回答ありがとうございます。 ルータはプロバイダ側が管理しているものを使っているので、詳しいことはわかりませんが、 おそらくそれが原因だと思います。 お手頃価格で5万ですか…。厳しいですね…。

関連するQ&A