安卓互动课堂
# 协议主体
## 基础
| 内容 | 详细说明 |
| ---------- | ------------------------------------------ |
| 字符编码 | utf-8 |
| 内存字节序 | 高位编址。例:`0x00 01`(1),`0x01 00`(256) |
| `null` | 置空 |
| `\` | 文本分割符 |
| *斜体内容* | 待定内容 |
## 帧
| 内容 | 详细说明 |
| ------ | ------------------------------- |
| 帧格式 | 帧长(4byte)+帧内容(不定长) |
| 帧内容 | 帧类型(byte)+帧实际内容(不定长) |
## 错误重连
| 错误 | 解决方式 |
| ------------------ | -------------------------- |
| 服务器收到错误数据 | 断开对应客户端,客户端重连 |
| 客户端收到错误数据 | 断开连接,重连 |
| 网络错误 | 客户端定时重连 |
## UDP广播
1. pc端作为client发送广播,android作为server接收广播
2. 广播内容为格式如下的UTF8 String:“ip#port”
## 帧类型
1. Android
|代码|定义|内容|
|-|-|-|
|0x01|获取连接URL||
|0x02|开始选择题|选项数(byte)/关闭(0xff),单/多选(byte 0x01单,0x02多),|
|0x03|开始判断题|开始(0x01),关闭(0xff)|
|0x04|开始抢答题|开始(0x01),关闭(0xff)|
|0x05|消息|0x01开始,0x02结束,0x03发送消息+消息(string)|
|0x06|随机挑中的人|学生总数(int)+第1个学生名字字节总长(int)+第1个学生名字(string)+第2个...|
|0xff|下课||
2. PC
|代码|定义|内容|
|-|-|-|
|0x01|返回连接URL|URL(string)|
|0x02|返回选择|学生名字字节总长(int)+学生名字(string)+答案个数(byte)+答案(byte 0x01:A 0x02:B...)|
|0x03|返回判断|学生名字字节总长(int)+学生名字(string)+答案(byte 0x01:对 0x02:错)|
|0x04|返回抢答|学生名字(string)|
|0x05|返回消息|学生名字字节总长(int)+学生名字(string)+消息(string)|
|0x06|返回挑人|无返回|
|0xff|返回学生连接|(0x01连,0x02断)+学生名字(string)|