簡體   English   中英

python客戶端和perl服務器:打包和拆包字節以發送/接收

[英]python client and perl server: packing and unpacking bytes to send/receive

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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM