如何将大二进制命令发送到Perl中的套接字?

时间:2015-05-26 21:48:30

标签: perl sockets overflow

我已成功与我的服务器建立TCP连接。服务器只能理解二进制命令。我在发送二进制数时遇到问题。例如,如果我想以二进制形式向服务器发送0xCA00018108010202020202020266,则会出现溢出错误。必须立即发送整个号码(一个应用层数据包)。如何在一个应用程序层数据包中将此原始二进制数发送到服务器?不幸的是,我必须在Perl中写这个,即使我能够很快地在Python中完成这个。

我的TCP连接工作正常,使用"使用IO :: Socket :: INET"。我试过"打印$ socket"和" $ socket->发送"

二进制数是一个命令。运行在服务器上的应用程序必须在一个应用程序层数据包中接收整个二进制命令。我无法改变这一点。

1 个答案:

答案 0 :(得分:0)

作为112位,big-endian,二进制补码,无符号整数:

print($socket "\xCA\x00\x01\x81\x08\x01\x02\x02\x02\x02\x02\x02\x02\x66");

print($socket pack("H*", "CA00018108010202020202020266"));