我试图在服务器和客户端之间分离TCP套接字消息。我尝试这样做的方式是用4个字节启动每条消息,其中包含一个整数,描述消息的大小。问题是,我不知道如何用额外的字节填充这个整数,使其大小为4字节。我在窗户上。
另外,服务器是用节点编写的,但我想我已经计算出了方程的那一面。
下面是我的一些代码,如果有帮助的话:
$data = JSON->new->utf8->encode({test=>123});
print $OUTPUT_SOCKET length(encode('UTF-8', $data)); # This needs to be 4 bytes
print $OUTPUT_SOCKET $data发布于 2018-05-06 00:53:57
sprintf "%32d", $length # Padded with spaces
sprintf "%032d", $length # Padded with zeroes如果不需要文本格式,请使用以下内容:
pack 'N', $length # 32-bit unsigned int (4 bytes) in BE byte order.
pack 'Q>', $length # 64-bit unsigned int (8 bytes) in BE byte order.如果采用这种方法,则可以将所有内容组合在一起:
print $SOCK pack 'N/a*', $encoder->encode($data); # Or Q>/a*https://stackoverflow.com/questions/50195216
复制相似问题