Ich schreibe ein Perl-Programm, das Nachrichten von zwei Sockets und acta als Schalter sendet und empfängt. Ich muss die empfangenen Nachrichten ändern, die von einem Socket empfangen werden, 3 Bytes den Daten vorangestellt werden und die geänderten Nachrichten schließlich an einen anderen Socket senden. Ich überlasse den Mechanismus select() ... sysread() ... syswrite(), um nach Nachrichten zwischen Sockets zu fragen. Die empfangenen Nachrichten werden während der Änderung in $ buffer gespeichert.Wie kann ich empfangene Socket-Nachrichten in Perl ändern?
Jetzt kann ich folgende Art und Weise verwenden, um die empfangenen Nachrichten zu erhalten:
my $hexmsg = unpack("H*", $buffer);
my @msg = ($hexmsg =~ m/../g);
dann kann ich 3 Bytes einfügen @msg. Allerdings weiß ich nicht, wie man die Nachricht in @msg in einen Skalar (wie $ buffer) packt und es mit syswrite() an einen anderen Socket sendet. Kann mir jemand helfen? Vielen Dank im Voraus!
BTW, sind Nachrichten in $ Puffer binär?
Außerdem habe ich versucht my $ shexmsg = join ("", @ msg); $ buffer = pack ("X", $ shexmsg); wo "X" bezeichnet Vorlage des Pack, wie "n *", "b *", "u *". Wie auch immer, alles gescheitert ... Ich weiß nicht, was ich tun soll ... – boyang