python客户端和perl服务器:打包和解包字节以发送/接收

python客户端和perl服务器:打包和解包字节以发送/接收,python,perl,sockets,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($lin

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";
我得到这个错误:
参数“\0\0\0C”在perl\u 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中没有正确地解包

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";
有什么建议吗?

我已经改变了

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


@Саа27不,只有蟒蛇