PHP与其他语言通信(如c++),如何自定义协议?

以socket的方式发送json格式的数据包,详细的数据包构造如下


包结构:
---------------------------------------------------------
| 字段 | 字节数 | 说明 |
---------------------------------------------------------
| 包头 | 定长(12字节)| 每个通信消息必须包含的内容 |
---------------------------------------------------------
| 包体 | 不定长 | 根据消息的不同而变化 |
---------------------------------------------------------

包头结构:
------------------------------------------------
| 字段 | 字节数 | 类型 | 说明 |
------------------------------------------------
| total_len | 2 | short |整个包的长度 |
------------------------------------------------
| type_num | 2 | short |协议号 |
------------------------------------------------
| net_id | 4 | int |网络号 |
------------------------------------------------
| player_id | 4 | int |玩家ID |
------------------------------------------------

包体:
------------------------------------------------
| data | 未知 | char |通信消息 |
------------------------------------------------
已邀请:

walkor

赞同来自: 七小

// === 包体 ===
$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;

要回复问题请先登录注册