gpt4 book ai didi

perl - 如何在Perl中修改收到的套接字消息?

转载 作者:行者123 更新时间:2023-12-03 11:51:34 26 4
gpt4 key购买 nike

我正在编写一个Perl程序,该程序从两个套接字发送和接收消息,并作为交换机执行。我必须修改从一个套接字接收到的接收消息,在数据之前添加3个字节,最后将修改后的消息发送到另一个套接字。我采用select()... sysread()... syswrite()机制在套接字之间轮询消息。修改期间,收到的消息存储在$ buffer中。

现在,我可以使用以下方式获取收到的消息:

my $hexmsg = unpack("H*", $buffer);
my @msg = ( $hexmsg =~ m/../g );

然后我可以在@msg中插入3个字节。但是,我不知道如何将@msg中的消息打包到标量中(例如$ buffer),然后通过syswrite()将其发送到另一个套接字。有谁能够帮我?先感谢您!

顺便说一句,消息是$ buffer二进制的吗?

最佳答案

是的,$ buffer中的消息是二进制的(如果我猜对了,您的意思是正确的)。如果将其拆包为@msg的唯一原因是插入字节,请不要这样做。请改用substr,然后只写出更改后的$ buffer。例如:

substr( $buffer, 0, 0, "\x01\x02\x03" ); # insert 3 bytes at beginning.

如果您使用@msg做其他事情,则可以继续使用它,以及
在写出之前进行substr插入,或者可以使用substr或pack或split
或vec或正则表达式来解析出您需要的部分。您需要描述一下自己
正在寻求更具体的帮助。

关于perl - 如何在Perl中修改收到的套接字消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/625376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com