我已经与服务器成功建立了TCP连接。服务器只能理解二进制命令。我在发送二进制数字时遇到问题。例如,如果我想以二进制形式将0xCA000181080102020202020202020266发送到服务器,则会出现溢出错误。整个号码必须一次发送(一个应用层数据包)。如何在一个应用程序层数据包中将此原始二进制数发送到服务器?不幸的是,即使我能够很快地在Python中完成此工作,也必须用Perl编写。
通过使用“使用IO::Socket::INET”,我的TCP连接有效。我已经尝试过“打印$ socket”和“$ socket->发送”
二进制数是一个命令。在服务器上运行的应用程序必须在一个应用程序层数据包中接收整个二进制命令。我不能改变这个。
最佳答案
作为112位的big-endian,二进制补码无符号整数:
print($socket "\xCA\x00\x01\x81\x08\x01\x02\x02\x02\x02\x02\x02\x02\x66");
或者
print($socket pack("H*", "CA00018108010202020202020266"));
关于perl - 如何在Perl中向套接字发送大二进制命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30469527/