Exemple #1
0
 /// <summary>
 /// Sends a string message.
 /// </summary>
 /// <param name="message">Message.</param>
 public void SendMessage(string message)
 {
     if (udpClient.IsConnected)
     {
         byte[] msg = Encoding.UTF8.GetBytes(message);
         udpClient.SendMessage(msg);
     }
 }
        private async void SendUserData(byte[] dest)
        {
            AppUser user = User.AccountsManager.Instance.CurrentUser;

            if (user != null)
            {
                await _client.SendMessage(0, Encoding.Unicode.GetBytes(user.Username), dest);

                if (user.UserAvatarSerialized != null)
                {
                    await _client.SendMessage(1, user.UserAvatarSerialized, dest);
                }
            }
        }
Exemple #3
0
        private void button_login_Click(object sender, EventArgs e)
        {
            UDPClient udpClient = KevRegister.Get <UDPClient>(ClientItemsPrimaryKey.Socket_UDPClient, () =>
            {
                udpClient = new UDPClient();
                udpClient.ServerIPPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 7788);
                udpClient.Start();
                return(udpClient);
            });

            KevSocketModel ksModel = new KevSocketModel()
            {
                DeviceId    = KevRegister.Get(UDPPrimaryKey.Client_ThisDeviceId, -1),
                MessageId   = IdGenerator.NextId(),
                MessageType = MessageType.Login,
                NetworkType = NetworkType.Request
            };

            if (!udpClient.SendMessage(ksModel))
            {
                MessageBox.Show("连接服务器失败,请稍后尝试");
            }
        }
Exemple #4
0
 protected override void OnExiting(object sender, EventArgs args)
 {
     client.SendMessage(MessageType.LEAVE, "disconnected " + client.ClientID);
     base.OnExiting(sender, args);
 }
Exemple #5
0
        public int HandleResponseMessage(UDPModel uModel)
        {
            //判断数据
            KevSocketModel <long> ksModel = JsonHelper.ParseFromJson <KevSocketModel <long> >(uModel.Body, uModel.Length);

            if (ksModel == null)
            {
                return(ResponseCode.NotFindKevSocketModel);
            }

            //处理相关的逻辑然后进行跳转
            Dispatcher dispatcher = KevRegister.Get <Dispatcher>(ClientItemsPrimaryKey.Dispatcher_MainThread);

            MainForm mainForm = KevRegister.Get <MainForm>(ClientItemsPrimaryKey.Form_Main);

            if (ksModel.ResponseCode == ResponseCode.Success)
            {
                dispatcher.Invoke(() =>
                {
                    if (mainForm != null)
                    {
                        mainForm.Hide();
                    }

                    //替换本机的Id
                    KevRegister.Add <long>(UDPPrimaryKey.Client_ThisDeviceId, ksModel.Data);

                    KevRegister.Get <HomeForm>(ClientItemsPrimaryKey.Form_Home, () =>
                    {
                        return(new HomeForm());
                    }).Show();
                });

                //请求本机资料
                KevSocketModel ksModel_requestSelfUserInfo = new KevSocketModel
                {
                    DeviceId    = KevRegister.Get <long>(UDPPrimaryKey.Client_ThisDeviceId, -1),
                    MessageId   = IdGenerator.NextId(),
                    MessageType = MessageType.GetUserInfo,
                    NetworkType = NetworkType.Request
                };

                UDPClient udpClient = KevRegister.Get <UDPClient>(ClientItemsPrimaryKey.Socket_UDPClient);
                if (!udpClient.SendMessage(ksModel_requestSelfUserInfo))
                {
                    KevRegister.Get <HomeForm>(ClientItemsPrimaryKey.Form_Home).label_status.Text = "请求自己的资料失败";
                }

                //获取已经登录的人
                KevSocketModel ksModel_getFriendList = new KevSocketModel
                {
                    DeviceId    = KevRegister.Get <long>(UDPPrimaryKey.Client_ThisDeviceId, -1),
                    MessageId   = IdGenerator.NextId(),
                    MessageType = MessageType.GetUserFriendList,
                    NetworkType = NetworkType.Request
                };
                udpClient.SendMessage(ksModel_getFriendList);
            }
            else
            {
                dispatcher.Invoke(() =>
                {
                    mainForm.ShowAPrompt(ResponseCode.GetDescription(ksModel.ResponseCode));
                });
            }

            return(ResponseCode.NoResponse);
        }