我有一些必须尽可能快的脚本(用作 mpd5 up/down 脚本)。
有这个想法:让这个脚本将参数发送到某个 tcp 服务器并完成工作,然后服务器会努力工作并且长时间工作。
这是我使用 Net::Server 的测试服务器脚本:
use Net::Server::PreForkSimple;
use base "Net::Server::PreForkSimple";
sub process_request {
my $self=shift;
my $a=<STDIN>;
close STDIN; close STDOUT; #trying to disconect client here
$self->log(1,"start $a");
sleep 50;
$self->log(1,"finish $a");
}
__PACKAGE__->run(port => 2000);
问题是:我不知道如何在 $a= 之后在线断开客户端。客户端脚本等待所有这些“睡眠 50”。我正在尝试关闭 STD*,但它没有帮助。此外,我无法在此 Net::Server 的文档中找到任何关闭或断开连接的方法。
谁能指出我正确的方向?
升级版:
close($self->{server}->{client});
也不行。
我测试这个
echo test | nc 127.0.0.1 2000
这个命令工作了 50 秒。
但我希望 nc 在发送“测试”后立即关闭。