// 获取有效的消息 // 返回值: // 消息对应客户端的唯一标识 // 消息内容 // 是否含有有效数据 func (c *Client) GetValieMessage() (int, []byte, bool) { // 判断是否包含头部信息 if len(c.content) < HEADER_LENGTH { return 0, nil, false } // 获取头部信息 header := c.content[:HEADER_LENGTH] // 将头部数据转换为内部的长度 contentLength := intAndBytesUtil.BytesToInt(header, byterOrder) // 判断长度是否满足 if len(c.content)-HEADER_LENGTH < contentLength { return 0, nil, false } // 提取消息内容 content := c.content[HEADER_LENGTH : HEADER_LENGTH+contentLength] // 将对应的数据截断,以得到新的数据 c.content = c.content[HEADER_LENGTH+contentLength:] // 截取内容的前4位 idBytes, content := content[:ID_LENGTH], content[ID_LENGTH:] // 提取id id := intAndBytesUtil.BytesToInt(idBytes, byterOrder) return id, content, true }
// 获取有效的消息 // 返回值:消息 // :是否含有有效数据 func (c *Client) GetValieMessage() ([]byte, bool) { // 判断是否包含头部信息 if len(c.content) < HEADER_LENGTH { return nil, false } // 获取头部信息 header := c.content[:HEADER_LENGTH] // 将头部数据转换为内部的长度 contentLength := intAndBytesUtil.BytesToInt(header, ByterOrder) // 判断长度是否满足 if len(c.content)-HEADER_LENGTH < contentLength { return nil, false } // 提取消息内容 content := c.content[HEADER_LENGTH : HEADER_LENGTH+contentLength] // 将对应的数据截断 c.content = c.content[HEADER_LENGTH+contentLength:] return content, true }