Exemplo n.º 1
0
// 获取有效的消息
// 返回值:
// 消息对应客户端的唯一标识
// 消息内容
// 是否含有有效数据
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
}
Exemplo n.º 2
0
// 获取有效的消息
// 返回值:消息
//		:是否含有有效数据
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
}