python - python客户端和perl服务器: packing and unpacking bytes to send/receive

标签 python perl sockets

python_client.py

def send_one_message(sock, data):
    length = len(data)
    sock.sendall(struct.pack('!I', length))
    sock.sendall(data)

perl_server.pl
sub ntohl {
    unpack("I", pack("N", $_[0]));
}

my $line = "";
$client_socket->recv($line, 4);
my $line_length = ntohl($line);
print "expected to receive $line_length bytes\n";

$client_socket->recv($line, $line_length);
print "$line\n";

我收到此错误:
perl_server.pl中的Argument "\0\0\0C" isn't numeric in pack
我不认为我在perl_server.pl中正确解压

有什么建议?

最佳答案

我换了ntohl

sub ntohl {
    unpack("I",  $_[0]);
}


sock.sendall(struct.pack('I', length))

关于python - python客户端和perl服务器: packing and unpacking bytes to send/receive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39631009/

相关文章:

python - 用 pandas 解析 CSV 并转换为 dict 结果仅在最后一行出现 KeyError

perl - 如何将稍后创建的小部件对象发送到 Tk 中的回调?

perl - 如何在 OS X 中编辑文件元数据?

java - 套接字与 SocketChannel

java - 为什么我的聊天应用程序无法在路由器后面运行?

python - 检测列表列表中某些索引中的重复值

python - Cython:了解 html 注释文件必须说的内容?

Python、Flask 客户端ip地址

perl - 批量重命名目录中的文件名

node.js - react native + SSL 套接字 : Error: xhr poll error