2016-09-22 81 views
2

python_client.pyPython客户端和Perl服务器:打包和拆包字节发送/接收

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

有什么建议吗?

+0

@Сухой27没有,只是蟒蛇 – ealeon

回答

0

我已经改变了再用ntohl

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

sock.sendall(struct.pack('I', length)) 
相关问题