昨天用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"; }