/// <summary> /// 发送消息 /// </summary> /// <param name="message">消息</param> /// <returns>状态</returns> public int SendAll(CMessage message) { int rtnSocketID = message.m_socketID; ChatData chatData = new ChatData(); GetChatData(chatData, message.m_body, message.m_bodyLength); lock (m_socketIDs) { foreach (int socketID in m_socketIDs.Keys) { if (rtnSocketID != socketID) { message.m_socketID = socketID; if (m_socketIDs[socketID].m_type == 0 && chatData.m_to.Length > 0) { if (chatData.m_to.IndexOf(m_socketIDs[socketID].m_userID) == -1) { continue; } } int ret = Send(message, chatData); } } } return(1); }
/// <summary> /// socket发送 /// </summary> /// <param name="message">消息</param> /// <param name="loginInfos">登录信息列表</param> /// <returns>状态</returns> public int Send(CMessage message, ChatData chatData) { String tokens = chatData.m_tokens; Binary bw = new Binary(); if (DataCenter.IsFull) { String key = Token; if (tokens.IndexOf(key) != -1) { return(1); } else { tokens += key; } } bw.WriteString(chatData.m_aes); bw.WriteString(tokens); bw.WriteString(chatData.m_from); bw.WriteString(chatData.m_to); bw.WriteString(chatData.m_content); bw.WriteInt(chatData.m_bodyLength); if (chatData.m_bodyLength > 0) { bw.WriteBytes(chatData.m_body); } byte[] bytes = bw.GetBytes(); message.m_body = bytes; message.m_bodyLength = bytes.Length; int ret = Send(message); bw.Close(); return(ret); }
/// <summary> /// 获取弹幕信息 /// </summary> /// <param name="loginInfos">弹幕信息</param> /// <param name="body">包体</param> /// <param name="bodyLength">包体长度</param> public int GetChatDatas(List <ChatData> datas, byte[] body, int bodyLength) { Binary br = new Binary(); br.Write(body, bodyLength); int chatSize = br.ReadInt(); for (int i = 0; i < chatSize; i++) { ChatData chat = new ChatData(); chat.m_userID = br.ReadInt(); chat.m_type = (int)br.ReadChar(); chat.m_text = br.ReadString(); datas.Add(chat); } br.Close(); return(1); }
/// <summary> /// 获取弹幕信息 /// </summary> /// <param name="loginInfos">弹幕信息</param> /// <param name="body">包体</param> /// <param name="bodyLength">包体长度</param> public int GetChatData(ChatData chatData, byte[] body, int bodyLength) { Binary br = new Binary(); br.Write(body, bodyLength); chatData.m_aes = br.ReadString(); chatData.m_tokens = br.ReadString(); chatData.m_from = br.ReadString(); chatData.m_to = br.ReadString(); chatData.m_content = br.ReadString(); chatData.m_bodyLength = br.ReadInt(); if (chatData.m_bodyLength > 0) { chatData.m_body = new byte[chatData.m_bodyLength]; br.ReadBytes(chatData.m_body); } br.Close(); return(1); }
/// <summary> /// socket发送 /// </summary> /// <param name="message">消息</param> /// <param name="loginInfos">登录信息列表</param> /// <returns>状态</returns> public int Send(CMessage message, List <ChatData> datas) { Binary bw = new Binary(); int chatsize = datas.Count; bw.WriteInt(chatsize); for (int i = 0; i < chatsize; i++) { ChatData chat = datas[i]; bw.WriteInt(chat.m_userID); bw.WriteChar((char)chat.m_type); bw.WriteString(chat.m_text); } byte[] bytes = bw.GetBytes(); message.m_body = bytes; message.m_bodyLength = bytes.Length; int ret = Send(message); bw.Close(); return(ret); }