为什么我的Perl脚本在尝试与服务器通信时会挂起?

时间:2017-09-02 09:15:25

标签: perl tcp

简介

我跟随着这本书"使用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;

运行脚本(已经使用chmod使其可执行)

然后本书使用此服务器作为连接的参数。

  

wuarchive.wust1.edu:daytime

./lgetr.pl wuarchive.wust1.edu:daytime

问题

执行时,程序就会挂起。我猜测程序正在等待服务器的响应。这是否意味着服务器不再存在?或者输错了?我怎么能让这个工作,或者我最好的选择是创建我自己的日间服务器? (我在C中有一点经验)

1 个答案:

答案 0 :(得分:6)

尝试一下这里提到的一些服务器:http://tf.nist.gov/tf-cgi/servers.cgi(Google第一次点击&#34;白天&#34;)。

另外,请勿printf print使用{{3}}就足够了,尤其是在没有格式字符串的地方。

此外,您似乎需要第二行,而不是第一行。

您可以使用循环来打印所有行:

print while <$fh>;

适用于我,例如time.maconbibb.us:daytime