这里写问题描述
为什么打包的时候,head设置了固定了28个字节,没有设置更大或是更小,请问有什么用意吗
/**
* 获取整个包的 buffer
*
* @param mixed $data
* @return string
*/
public static function encode($data)
{
$flag = (int)is_scalar($data['body']);
if (!$flag) {
$data['body'] = serialize($data['body']);
}
$data['flag'] |= $flag;
$ext_len = strlen($data['ext_data']);
$package_len = self::HEAD_LEN + $ext_len + strlen($data['body']);
return pack("NCNnNnNCnN", $package_len,
$data['cmd'], $data['local_ip'],
$data['local_port'], $data['client_ip'],
$data['client_port'], $data['connection_id'],
$data['flag'], $data['gateway_port'],
$ext_len) . $data['ext_data'] . $data['body'];
}
NCNnNnNCnN这个格式打包正好是28个字节
28个字节刚好能装下这些数据呗
ip需要4个字节,端口需要2个字节,杂七杂八都加起来28个字节