在Perl中,给定两个IO::Socket';s如何连接第一个插座&x27;s输入到第二个';s输出,反之亦然?
假设我在在Perl中,给定两个IO::Socket';s如何连接第一个插座&x27;s输入到第二个';s输出,反之亦然?,perl,sockets,Perl,Sockets,假设我在IO::Socket的帮助下在Perl中建立了两个连接。第一个具有套接字$s1,第二个具有套接字$s2 有什么想法吗?我如何将它们连接在一起,使从$s1接收到的内容发送到$s2,从$s2接收到的内容发送到$s1 我不明白怎么做。我不知道如何把它们连接起来。我希望做一些类似于$s1->stdin=$s2->stdout和$s2->stdin=$s1->stdout的事情,但是Perl中没有这样的构造 请帮帮我 谢谢,波达·西多。怎么样 $s2->print( $_ ) while &
IO::Socket
的帮助下在Perl中建立了两个连接。第一个具有套接字$s1
,第二个具有套接字$s2
有什么想法吗?我如何将它们连接在一起,使从$s1
接收到的内容发送到$s2
,从$s2
接收到的内容发送到$s1
我不明白怎么做。我不知道如何把它们连接起来。我希望做一些类似于$s1->stdin=$s2->stdout
和$s2->stdin=$s1->stdout
的事情,但是Perl中没有这样的构造
请帮帮我
谢谢,波达·西多。怎么样
$s2->print( $_ ) while <$s1>;
$s2->while打印($);
如果您处理的是二进制数据,您需要知道读写块的大小。假设您正在处理512字节的块:
my $buffer;
while (read $s1 => $buffer, 512) { # read up to 512 bytes
print $s2 $buffer;
}
我不确定管道
是否与插座一起工作,但如果是这样:
pipe $s1 => $s2;
pipe $s2 => $s1;
“可能”有用。我对管道
功能没有太多经验
编辑:
如评论中所述,您似乎正在尝试创建HTTP代理。CPAN已经有几个模块可以为您实现这一点。出现了一个快速搜索:
在套接字上工作得很好,套接字是IO::Handle
对象。事实上,没有办法“连接”两个套接字。您必须从第一个数据库读取数据(sysread优于readline),然后将该数据写入另一个数据库。(有一个sendfile系统调用连接两个描述符,但其中一个必须是磁盘文件。)您实际想要实现什么?jrockway,我正在尝试创建一个可以监视我的web使用情况的程序。因此,当我连接到web时,我希望这个程序位于我和web之间。