在Perl中,给定两个IO :: Socket如何将第一个插槽的输入连接到第二个输出,反之亦然?

bod*_*ydo 2 sockets perl

假设我在Perl的帮助下建立了两个连接IO::Socket.第一个有套接字$s1,第二个有套接字$s2.

任何想法如何我可以将它们连接在一起,以便从$s1发送到$s2收到的任何内容以及收到的任何内容都$s2被发送到$s1

我无法理解如何做到这一点.我不知道如何将它们连接在一起.我希望做这样的事$s1->stdin = $s2->stdout$s2->stdin = $s1->stdout,但也有在Perl没有这样的构造.

请帮我!

谢谢,Boda Cydo.

Eri*_*rom 6

如果您正在处理二进制数据,则需要知道要读取和写入的块大小.假设您正在处理512字节的块:

my $buffer;
while (read $s1 => $buffer, 512) { # read up to 512 bytes
    print $s2 $buffer;
} 
Run Code Online (Sandbox Code Playgroud)

我不确定是否pipe适用于套接字,但如果是这样的话:

pipe $s1 => $s2;
pipe $s2 => $s1;
Run Code Online (Sandbox Code Playgroud)

"可能"有效.我对这个pipe功能没什么经验.

编辑:

正如评论中所提到的,您似乎正在尝试创建HTTP代理.CPAN已经有几个可以为您完成此任务的模块.快速搜索出现了: