以socket的方式发送json格式的数据包,详细的数据包构造如下
包结构:
---------------------------------------------------------
| 字段 | 字节数 | 说明 |
---------------------------------------------------------
| 包头 | 定长(12字节)| 每个通信消息必须包含的内容 |
---------------------------------------------------------
| 包体 | 不定长 | 根据消息的不同而变化 |
---------------------------------------------------------
包头结构:
------------------------------------------------
| 字段 | 字节数 | 类型 | 说明 |
------------------------------------------------
| total_len | 2 | short |整个包的长度 |
------------------------------------------------
| type_num | 2 | short |协议号 |
------------------------------------------------
| net_id | 4 | int |网络号 |
------------------------------------------------
| player_id | 4 | int |玩家ID |
------------------------------------------------
包体:
------------------------------------------------
| data | 未知 | char |通信消息 |
------------------------------------------------
// === 包体 ===
$body = json_encode(array(.....));
// === 包头 ===
// 整个包长(算头部12字节)
$total_len = 12 + strlen($body);
// 包头
$head = pack('S', $total_len).pack('S', $版本号).pack('N', $网络号).pack('N', $玩家ID);
// ===整个包====
$package = $head.$body;
大佬请问Java那边和上面一样加的一个标识ID 2个字节的 那边发二进制给我 我这边应该如何解析呢 我使用unpack('S')解析出来的是0
unpack('n') 试下