【发布时间】:2009-03-11 06:03:30
【问题描述】:
我正在编写一个 Perl 程序,它从两个套接字发送和接收消息,并充当开关。我必须修改从一个套接字接收到的消息,将 3 个字节添加到数据中,最后将修改后的消息发送到另一个套接字。我采用 select()...sysread()...syswrite() 机制来轮询套接字之间的消息。接收到的消息在修改时保存在 $buffer 中。
现在我可以使用以下方式来获取收到的消息:
my $hexmsg = unpack("H*", $buffer);
my @msg = ( $hexmsg =~ m/../g );
然后我可以在@msg 中插入 3 个字节。但是,我不知道如何将@msg 中的消息打包成一个标量(例如$buffer)并通过syswrite() 将其发送到另一个套接字。有谁能够帮我?提前谢谢!
顺便说一句,$buffer 中的消息是二进制文件吗?
【问题讨论】:
-
此外,我已经尝试过我的 $shexmsg=join("",@msg); $buffer=pack("X",$shexmsg);其中“X”表示pack的模板,如“n*”、“b*”、“u*”。然而,一切都失败了……我不知道该怎么办……