我刚开始使用Perl学习套接字编程。是否有方法使用Perl套接字编程从已运行的脚本/工具发送输出(STDOUT)数据/图像?
答案 0 :(得分:3)
如果您的现有脚本将其输出转储到控制台(STDOUT
),您只需使用netcat重定向它(参见nc(1)
):
在服务器上:
server-host:~$ nc -l -p 3232 > file.txt
在客户端:
client-host~$ perl -e 'printf( "Hello %s\n", "world" )' | nc server-host 3232
选择端口(3232)当然是任意的,但在Unix上它应该大于1024,以便能够在没有root权限的情况下绑定它。
那么:
#!/usr/bin/env perl
use strict;
my $usage = "Usage: $0 <host:port> <prog>\n";
my $hp = shift @ARGV or die "$usage";
my $prg = shift @ARGV or die "$usage";
my ($host,$port) = split ":", $hp;
defined $host or die "$usage";
defined $port or die "$usage";
exec "$prg @ARGV | nc $host $port" or die "can't execute $prg\n";