perl - 如何在Perl中向套接字发送大二进制命令?

标签 perl sockets overflow

我已经与服务器成功建立了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/

相关文章:

java - 使用 Java SSLSocket 时 Windows 和 Linux/OS X 之间有什么区别?

sockets - 安装 Quicklisp 连接被拒绝错误

c - 在c中通过套接字发送缓冲区长度和缓冲区

javascript - 弹出窗口打开时防止正文滚动

c# - LINQ to SQL 转换溢出

javascript - 如何获取JavaScript当前的工作目录?

perl - 如何将函数传递给 Perl sub?

perl - 如何在 Win32 上使用 Perl 重新映射键盘?

c - 处理分数乘法中的溢出

perl - 所有引用都以标量形式存在吗?甚至是明确的?