[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:22000] Re: error Socket::unpack_sockaddr_in when use Net::Ping



> start!
> Use of uninitialized value at /usr/lib/perl5/5.005/i386-linux/Socket.pm line 295.
> Bad arg length for Socket::unpack_sockaddr_in, length is 0, should be 16
>  at /usr/lib/perl5/5.005/i386-linux/Socket.pm line 295.
> -----------------------------
> 
> ã¨ã„ã£ãŸã‚¨ãƒ©ãƒ¼ãŒå¸°ã£ã¦ãã¦ã—ã¾ã„ã¾ã™ã€‚
> # ã¡ãªã¿ã« ping ãŒå¤±æ•—ã™ã‚‹ãƒ›ã‚¹ãƒˆã«å‘ã‹ã£ã¦å®Ÿè¡Œã—ãŸæ™‚ã«ã¯æ­£å¸¸ã«çµ‚了ã—ã¾ã™ã€‚

Ping.pmã®ã‚µãƒ–ルーãƒãƒ³ping_udpã®ä¸­ã§ã€recv ã®æˆ»ã‚Šå€¤ã‚’ãã®ã¾ã¾
sockaddr_in ã«æ¸¡ã—ã¦ã„ã‚‹ã‘ã©ã€recvãŒã‚¨ãƒ©ãƒ¼ã«ãªã£ã¦æˆ»ã‚Šå€¤ãŒundefã ã£ãŸ
ãŸã‚ã€sockaddr_inã®unpackã™ã‚‹ã¨ã“ã‚ã§ã²ã£ã‹ã‹ã£ã¦ã„ã¾ã™ã€‚

ã“ã“らã®ãƒ­ã‚¸ãƒƒã‚¯ã¯

    指定アドレスã®udp/echoãƒãƒ¼ãƒˆã«ãƒ‘ケットをé€ã‚‹
    selectã§è¿”事を待ã¤(timeoutã‚ã‚Š)
    recvã—ã¦é€ã‚Šä¸»ã®ã‚¢ãƒ‰ãƒ¬ã‚¹/ãƒãƒ¼ãƒˆã‚’確èª

ã¨ã„ã†ãµã†ã«ãªã£ã¦ã¾ã™ãŒã€ã“ã®recvãŒã‚¨ãƒ©ãƒ¼(=戻り値undef)ã ã£ãŸã¨ãã®å‡¦
ç†ãŒã‚ã‚Šã¾ã›ã‚“。ã‚ã‚„ã—ã„ã®ã§recvã§ã‚¨ãƒ©ãƒ¼ã ã£ãŸã¨ãã¯$!を表示ã™ã‚‹ã‚ˆã†ã«
ã—ã¦å®Ÿé¨“ã—ãŸã¨ã“ã‚ECONNREFUSEDã§ã—ãŸã€‚

127.0.0.1ã ã¨è‡ªãƒ›ã‚¹ãƒˆãªã®ã§udpã®echoã«ç­”ãˆã‚‹ãƒ—ロセスãŒãªã„ã¨ã“ã®ã‚¨ãƒ©ãƒ¼
ãŒè¦‹ãˆã¦ã—ã¾ã†ã¨ã„ã†ã“ã¨ã ã¨æ€ã„ã¾ã™ã€‚(他ホストãªã‚‰è¿”事ãŒãªã„ã ã‘ãªã®
ã§timeoutã™ã‚‹) 実際ã€æ¡ä»¶ã‚’変ãˆã¦

    udpã®echoã«ç­”ãˆã‚‹ã‚ˆã†ã«ã—ã¦127.0.0.1
    udpã®echoã«ç­”ãˆãªã„他ホスト
    udpã®echoã«ç­”ãˆã‚‹ä»–ホスト

ã®3通りã§è©¦ã—ã¾ã—ãŸãŒã“ã®å•é¡Œã¯å‡ºã¾ã›ã‚“ã§ã—ãŸã€‚

最終的ã«è‡ªãƒ›ã‚¹ãƒˆã«pingã™ã‚‹ã®ãŒç›®çš„ã§ã¯ãªãã¦ãƒ†ã‚¹ãƒˆã‹ä½•ã‹ã®ãŸã‚ã‚„ã£ã¦ã¿
ãŸã‚‰ã²ã£ã‹ã‹ã£ãŸã‚“ã˜ã‚ƒãªã„ã‹ã¨æ€ã„ã¾ã™ã€‚ä»–ã®ãƒ›ã‚¹ãƒˆã«å‘ã‘ã¦ä½¿ã†åˆ†ã«ã¯å•
é¡Œã¯ã§ãªã„ã¨æ€ã„ã¾ã™ã®ã§ã€æ°—ã«ã—ãªã„ã§é€²ã‚€ã®ãŒæ­£è§£ã‹ãª?? ã‚€ã—ã‚udpã®
echoã«ç­”ãˆãªã„設定ã®ãƒ›ã‚¹ãƒˆãŒå¤šãã†ãªã®ã§ãã£ã¡ãŒå•é¡Œã«ãªã‚Šãã†ãªæ°—ã‚‚ã—
ã¾ã™ã€‚(手元ã«potatoã¨FreeBSD4.0RãŒã‚ã‚Šã¾ã™ãŒã©ã£ã¡ã‚‚インストールã—ãŸçŠ¶
æ…‹ã‹ã‚‰ã„ã˜ã£ãŸæ†¶ãˆã¯ãªã„ã®ã«inetd.confã§ã‚³ãƒ¡ãƒ³ãƒˆã‚¢ã‚¦ãƒˆã•ã‚Œã¦ã¾ã—ãŸ)

                                                       æ¾äº•