いやあ、久しぶりにインターネットソケット通信処理を書いたので、つまらんところでハマってしまった(^^;
UDP 通信サーバを Perl で書いたのだが、なぜか外のマシンから接続できない。
自サーバ内でテスト用のクライアントを走らせたらちゃんとメッセージが届くのに・・・
ええ、そうです。あなたの推測どおりでございます(^^;
IO::Socket::INET モジュール使ってるんだけど、その new() コンストラクタ内のオプションで、
my $s = IO::Socket::INET->new(LocalAddr => "localhost",LocalPort => 50001,ReuseAddr => 1,Proto => "udp") or die $!;
ってしてただけの話しで(^^;
"localhost"にバインド(アドレス設定)してるんで、同一マシン内からしか接続できないのが当たり前だ。
いや、ま、実際には LocalAddr => $LOCAL_ADDR という具合に定数でセットしてたんで、それに気づくのが遅れてしまった(^^;とほほ・・・
あと、最初にテストしていたのが、ルータでポートフォワーディングしまくりとか、色々特殊なネットワーク環境下だったので、疑うべきところが色々あって、そこまでなかなか目が向かなかったというのも言い訳の一つに揚げておこう(^^;
LocalAddr に、外部から接続可な IP アドレスを設定すれば問題解決。
さあ、これで客先にこのサーバ持ち込んでテスト出来るぞ。
テスト用サーバが EeePC 4G なんで(今、テストに使える UNIX 環境がこれしか無かったのよ(^^;)、お客さん、びっくりするかもしれんけど(^^;;;
電気ウナギ的○○
About Backコメント(0)
電気ウナギ的○○