久しぶりに INET 通信サーバ書いたので[Perl]
(2012-02-14 04:15:50) by shinoda


いやあ、久しぶりにインターネットソケット通信処理を書いたので、つまらんところでハマってしまった(^^;

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 という具合に定数でセットしてたんで、それに気づくのが遅れてしまった(^^;とほほ・・・
<画像:20120213_udp_server.JPG>
あと、最初にテストしていたのが、ルータでポートフォワーディングしまくりとか、色々特殊なネットワーク環境下だったので、疑うべきところが色々あって、そこまでなかなか目が向かなかったというのも言い訳の一つに揚げておこう(^^;

LocalAddr に、外部から接続可な IP アドレスを設定すれば問題解決。

さあ、これで客先にこのサーバ持ち込んでテスト出来るぞ。

テスト用サーバが EeePC 4G なんで(今、テストに使える UNIX 環境がこれしか無かったのよ(^^;)、お客さん、びっくりするかもしれんけど(^^;;;

コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8