今、Winsockで、2人で、Recvとsendで、簡易チャットをやっていますが、
家のLAN内のパソコンでは2人でやりとりできるのですが、
外部からのパソコンで行うと動作しません。
(ホストの名前取得で、192.168.1.49(LAN用IP)で、
192.168.1.49にクライアントからサーバーに送ると届きますが、
外部用のIP:211.19.xxx.xでクライアントからサーバーに送ると届かない。)
WinSockはLAN用のプログラムなのですか?
それとも、LAN用の関数と、ネットワーク用とにわかれているのですか?
家から家(OK)
家から外部の家(×)
サブネットマスクの設定でマスクしてあるからでは。
192.168.1.49
211.19.xxx.x
この2つの間で接続するには、両方のサブネットマスクを
0.0.0.0
とする必要がありますが、現実的ではないと思います。
tcp/ipの本を読みましょう。(又は、インターネットで検索)
追伸
まず、PINGを使って、通信できるかを確認して下さい。
PING 192.168.1.49
PING 192.168.1.49
は動きましたが、
PING 211.19.xxx.x
は動きません。
単体からつないだパソコン(ルータなしのADSL)ならできるのでしょうか?
また192.168.1.49でやると、211.19.xxx.xの方が使えないのでしょうか?
(WinsockでIP変換してくれる関数はないでしょうか?)
サブネットマスクは?
TCPのIPアドレスが、”IPアドレスを自動的に取得”になっており、
サブネットマスク・IPともに設定していません。
(設定したら、
IP:211.19.xxx.x
サブネットマスク:255.254.0.0 0.0.0.0
で動かなくなりました。)
ゲートウェイがLANからWANを経由の中間点らしいのですが、関係あるのでしょうか?
ほとんどのルータのデフォルトで不要なポートはブロックする
設定になっていると思いますので、作成したアプリの使っている
ポートのフィルタ設定を確認してみて下さい。(相手側も)
その後で、ルータのNATやIPマスカレード等の設定を確認して
みてはいかがでしょうか。(もちろん相手側も)
ルータが正しく設定してあれば、特に意識せず、
送信先:相手のアドレスで問題ないと思います。
アドレスの変換はルータがやってくれます。
>PING 211.19.xxx.x
についてはよく分かりません。
>ほとんどのルータのデフォルトで不要なポートはブロックする
>設定になっていると思いますので、作成したアプリの使っている
>ポートのフィルタ設定を確認してみて下さい。(相手側も)
ルータ上で、ローカルサーバー機能というものを使って、
ポート開始8番、終了8番で自分のマシンのIPに設定しました。
>その後で、ルータのNATやIPマスカレード等の設定を確認して
>みてはいかがでしょうか。(もちろん相手側も)
デフォルトゲートウェイにはルータのIPを、DNSには、プライマリDNSとセカンダリDN
Sを入力しましたが
できませんでした。
ポート8番で外部クライアントからうちのサーバーに通しても動きません。
PINGは
PING 192.168.1.49
PING 219.103.x.x (動的IPアドレス)
両方動くようになりました
ふと思ったんですが、作成されたチャットプログラムは
TCPで接続しています?
もしそうなら、ちょっと改造してポート80番で動くようにして
ルータの設定をWebサーバーを外部に公開する設定にしてみると
うまく通信できませんか?
うまくいくようなら、後はプログラムを元に戻して、ルータの
設定をWebサーバー公開でやったようにして、ポートの部分を
書き換えればいけそうな感じですけど。。
#IISとか動いているときは止めないとだめですけど。。
#うまくいかなかったらごめんなさい。
だめでした。
ルータでDHCPサーバーを無効にして、
HTTPDを立ち上げて、
友達からのパソコンから
自分のマシンのルータのグローバルアドレスに
アクセスしてもらったのですができませんでした。
NAT(アドレス変換)ポートフォワード機能が
ついているようなことが説明書にも書かれているのですが…、
(ルータBA512:バーチャルコンピュータ機能・ローカルサーバー機能)
うちからWAN側IPで呼び出すと、ルータにアクセスしてしまいます。
どうもグローバルIPアドレス=>プライマリIPアドレスに
うまく変換できてないようです。
今日、業者に連絡したら、1日中通話中でした・・・
>ふと思ったんですが、作成されたチャットプログラムは
>TCPで接続しています?
>もしそうなら、ちょっと改造してポート80番で動くようにして
>ルータの設定をWebサーバーを外部に公開する設定にしてみると
>うまく通信できませんか?
TCPです。TCPの8番でやりとりしています。
80番では、HTTPDを立ち上げて
ルータの
マルチNAT(バーチャルコンピュータ機能)有効
グローバルIPアドレス ー> プライベートIPアドレス
61.205.219.148 ->192.168.1.37
ローカルサーバ
対象プロトコル 外部ポート 転送先プライベートIPアドレス
TCP 80 192.168.1.37
として友達からアクセスを頼んだのですが、
動きませんでした。(index.htmlもhttpdの上においていてLAN上からではみれました)
それとも、ポートフォワード機能がついていないのでしょうか?
(ルータBA512:
バーチャルコンピュータ機能・ローカルサーバー機能は違う?
または、動的WAN側IP1個だけだと、ルータにIPをとられてします?
)