用Net::Telnet来弥补System.Net.Sockets的不足

  昨天用System.Net.Sockets来检查服务器的80端口是否正常,但是它无法控制连接到主机的超时时间,按MSDN说法,好像只能控制Send 调用超时时间,没有找到连接超时时间设置,这样造成了当程序连接到一个没有开放80端口的IP时要等待十多秒,程序变得非常缓慢。

Socket 成员:http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket_members(v=VS.80).aspx

 

  今天google perl telnet得知Net::Telnet,用它来弥补了上个程序的不足,速度快了几倍。

Net::Telnet模块介绍http://search.cpan.org/~jrogers/Net-Telnet-3.03/lib/Net/Telnet.pm

#!/usr/bin/perl
use strict;
use Net::Telnet();
my $host=$ARGV[0];
my $state;

my $obj = new Net::Telnet (Timeout => 5,
                           Port=> 80,
                           Errmode=>'die'
                           );

$state=eval{$obj->open($host)};
$obj->close;

if ($state==1){
  print "$host|true\n";
  }
else{
    print "$host|false\n";
     }

 

posted @ 2010-04-10 11:57  大力  阅读(462)  评论(0编辑  收藏  举报