介绍
我正在关注Stein的"Perl网络编程"一书.这是本书中的第二个Perl脚本,脚本尝试使用正确的协议与日间服务器进行通信,以便从服务器获取日期和时间作为响应.
从远程服务器读取第一行
#!/usr/bin/perl
# file: lgetr.pl
use IO::Socket;
my $server = shift;
my $fh = IO::Socket::INET->new($server);
my $line = <$fh>;
printf $line;
Run Code Online (Sandbox Code Playgroud)
运行脚本(已经使用chmod使其可执行)
然后本书使用此服务器作为连接的参数.
wuarchive.wust1.edu:daytime
./lgetr.pl wuarchive.wust1.edu:daytime
Run Code Online (Sandbox Code Playgroud)
问题
执行时,程序就会挂起.我猜这个程序正在等待来自服务器的响应.这是否意味着服务器不再存在?或者输错了?我怎么能让这个工作,或者我最好的选择是创建我自己的日间服务器?(我在C中有一点经验)
尝试一下这里提到的一些服务器:http://tf.nist.gov/tf-cgi/servers.cgi(谷歌第一次点击"白天").
另外,不要使用printf,其中print足够,特别是在没有格式字符串的情况下.
而且,似乎你需要第二行,而不是第一行.
您可以使用循环来打印所有行:
print while <$fh>;
Run Code Online (Sandbox Code Playgroud)
适用于我,例如time.maconbibb.us:daytime.