Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
        /// <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);
        }