/// <summary>
        /// 用户列表.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected override void Func1(object sender, EventArgs e)
        {
            SystemMessage message = new SystemMessage()
            {
                Header = new MessageHeader()
                {
                    CommandID  = MessageHeader.QM_UserList_Req,
                    SequenceNo = this.sequence++,
                },

                Body = new UserListRequest()
                {
                    UserToken = userToken
                },
            };

            // 发送登录消息.
            messageSender.SendMessage(message);
            ShowMessage("发送:" + message.ToString());


            // 接收反馈.
            SystemMessage resultMessage = messageReceiver.ReceiveMessage();

            ShowMessage("接收:" + resultMessage.ToString());

            UserListRespond resultBody = resultMessage.Body as UserListRespond;

            this.userList = resultBody.UserList;
        }
Beispiel #2
0
        private void bgwReceive_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            if (e.ProgressPercentage == 1)
            {
                SystemMessage message = e.UserState as SystemMessage;

                switch (message.Header.CommandID)
                {
                case MessageHeader.QM_UserList_Resp:
                    // 收到的消息是  当前用户列表.
                    UserListRespond userListRespond = message.Body as UserListRespond;
                    if (String.Join(",", this.UserList) != String.Join(",", userListRespond.UserList))
                    {
                        this.UserList = userListRespond.UserList;
                        this.lstUserList.DataSource = this.UserList;
                    }
                    break;

                case MessageHeader.QM_Ask_Resp:
                    // 收到的是 请求通话应答.
                    AskRespond askRespond = message.Body as AskRespond;
                    if (askRespond.Status == 1)
                    {
                        IPEndPoint userPoint = new IPEndPoint(IPAddress.Parse(askRespond.IpAddress), askRespond.Port);

                        if (!this.userDictionary.ContainsKey(askRespond.UserName))
                        {
                            this.userDictionary.Add(askRespond.UserName, userPoint);
                        }
                        else
                        {
                            // 刷新.
                            this.userDictionary[askRespond.UserName] = userPoint;
                        }

                        this.SendMessageStep2(userPoint, this.txtMessage.Text);
                    }
                    break;


                case MessageHeader.QM_Talk_Req:
                    // 收到的是 消息.
                    TalkRequest talkRequest = message.Body as TalkRequest;

                    string info = string.Format("{0} : {1} \r\n", talkRequest.FromUser, talkRequest.TalkMessage);

                    this.txtTalkResult.AppendText(info);

                    break;
                }
            }

            // 简单输出.
            ShowMessage(e.UserState.ToString());
        }