私は2つのソケットとactaからスイッチとしてメッセージを送受信するPerlプログラムを書いています。私は1つのソケットから受信した受信メッセージを修正し、データに3バイトを追加し、最後に変更されたメッセージを別のソケットに送信する必要があります。 select()... sysread()... syswrite()のメカニズムを採用して、ソケット間のメッセージをポーリングします。受信したメッセージは変更中に$ bufferに保存されます。その後、私は@msgに3つのバイトを挿入することができます受信したソケットメッセージをPerlでどのように変更できますか?
my $hexmsg = unpack("H*", $buffer);
my @msg = ($hexmsg =~ m/../g);
:
今、私が受信したメッセージを取得するには、次の方法を使用することができます。しかし、@msgのメッセージをスカラー($ bufferなど)にパックし、syswrite()によって別のソケットに送る方法はわかりません。誰か助けてくれますか?前もって感謝します!
ところで、$ bufferバイナリのメッセージですか?
さらに、私は試しました my $ shexmsg = join( ""、@ msg); $ buffer = pack( "X"、$ shexmsg); ここで、「X」は「n *」、「b *」、「u *」などのパックのテンプレートを示します。しかし、すべて失敗しました...私は何をすべきかわかりません... – boyang