Exemplo n.º 1
0
 public MainWindow()
 {
     InitializeComponent();
     //版本确认
     if (DateTime.Now.Year != 2021)
     {
         throw new Exception("Year Old 版本过旧");
     }
     Server.GetNewMessage += Server_GetNewMessage;
     Server.StartGetMessage();
     (ClienTimeOutThread = new Thread(() =>
     {
         while (true)
         {
             Thread.Sleep(StaticResource.ClientTimeOut * 1000);
             EndPoint[] keys = OnLineUsers.Keys.ToArray();
             foreach (EndPoint k in keys)
             {
                 if ((DateTime.Now.Ticks - OnLineUsers[k].Ticks) > 10000000 * (StaticResource.ClientTimeOut + 1))
                 {
                     Server.SendTo(IsOnLine.Server_Send(false).ToByte(), k);
                     foreach (var item in LIST_OnlineUsers.Items)
                     {
                         if (item.GetType().GetProperty("IpAddress").GetValue(item).Equals(k))
                         {
                             Dispatcher.Invoke(() =>
                             {
                                 LIST_OnlineUsers.Items.Remove(item);
                             });
                             break;
                         }
                     }
                     OnLineUsers.Remove(k);
                 }
             }
         }
     })).Start();
 }
Exemplo n.º 2
0
        public MainWindow()
        {
            InitializeComponent();
            //设置窗体位置
            Double FormMargin = 50;

            Left = FormMargin;
            //下角
            //Top = StaticResource.ScreenHeight - Height - FormMargin - 40;
            //中间
            Top   = (StaticResource.ScreenHeight - Height) / 2 - Height;
            Width = StaticResource.ScreenWidth - FormMargin * 2;

            String ForegroundColors = "Black,White,Red,Orange,Yellow,Green,Aqua,Blue,Purple,Gray,Lime,Pink,#FF0068FF,#FFFF0097,#FF00FFA2,#FF8000FF,#FFFF0068,#FFF959E3,";

            foreach (var v in typeof(Brushes).GetProperties())
            {
                ForegroundColors += v.Name + ",";
                var a = v.GetMethod;
                var b = v.Name;
                var c = v.GetValue(typeof(Brushes));
                //ForegroundColors += v.GetMethod.Invoke(,) + ",";
            }
            ForegroundColors = ForegroundColors.Remove(ForegroundColors.Length - 1);
            COLORSELECT_Foreground.Colors       = ForegroundColors;
            COLORSELECT_Foreground.SelectedItem = COLORSELECT_Foreground.Items[0];
            //设置 键盘钩子
            KeyboardHookProc = (c, p, ip) =>
            {
                //110是 小键盘的 .
                if (ip.First().ToString() == "110")
                {
                    if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
                    {
                        WindowState = WindowState.Normal;
                        this.Show();
                        if (!BulletChatsForm.MainBulletChatsForm.Topmost)
                        {
                            BulletChatsForm.MainBulletChatsForm.Topmost = true;
                        }
                    }
                    else
                    {
                        Directory.CreateDirectory(DateTime.Now.ToString("yyyy-MM-dd"));
                        String fileName = ".\\" + DateTime.Now.ToString("yyyy-MM-dd") + "\\" + DateTime.Now.ToString("HH:mm:ss") + ".png";
                        GDITool.SaveScreenImage(fileName);
                    }
                }
                else if (ip.First().ToString() == "27")
                {
                    Hide();
                }
                return(0);
            };
            KeyBoardHookID = SetWindowsHookEx(13, KeyboardHookProc, IntPtr.Zero, 0);

            Server.StartGetMessage();
            new BulletChatsForm().Show();
            Server.GetNewMessage += Server_GetNewMessage;
            (IsOnlineThread = new Thread(() =>
            {
                while (true)
                {
                    //Server.SendTo(IsOnLine.Client_Send().ToByte(),)
                    SendToServer(IsOnLine.Client_Send());
                    Thread.Sleep((StaticResource.ClientTimeOut - 1) * 1000);
                }
            })).Start();
        }
Exemplo n.º 3
0
        private void Server_GetNewMessage(byte[] Content, MessageBase Message, System.Net.EndPoint FromIP)
        {
            if (BlackMembers.Where(ip => FromIP == ip).Count() > 0)
            {
                return;                                                    //如果是黑名单就拒收
            }
            String TagMessage = "";

            if (Message.MessageType == SocketMessageType.IsOnLine)
            {
                IsOnLine onlin = IsOnLine.ToModel <IsOnLine>(Content);
                if (OnLineUsers.Keys.Where(k => k.Equals(FromIP)).Count() > 0)
                {
                    OnLineUsers[FromIP] = DateTime.Now;
                }
                else
                {
                    OnLineUsers.Add(FromIP, DateTime.Now);
                    Dispatcher.Invoke(() =>
                    {
                        LIST_OnlineUsers.Items.Add(new
                        {
                            IpAddress = FromIP,
                            Content   = onlin,
                        });
                    });
                }
                TagMessage = "在线确认消息";
            }
            else if (Message.MessageType == SocketMessageType.SelectServer)
            {
                Server.SendTo(SelectServer.Server_Return(StaticResource.IPV4Address + ":" + StaticResource.ServerPort).ToByte(), FromIP);
            }
            else if (Message.MessageType == SocketMessageType.BulletChat)
            {
                BulletChatModel bullet = BulletChatModel.ToModel <BulletChatModel>(Content);
                TagMessage = $"{bullet.SendUser}发送的弹幕:{bullet.Message}";
                foreach (EndPoint user in OnLineUsers.Keys)
                {
                    if (BlackMembers.Where(ip => ip.Equals(user)).Count() > 0)
                    {
                        continue;
                    }
                    Server.SendTo(Content, user);
                }
            }
            Dispatcher.Invoke(() =>
            {
                if (LIST_Messages.Items.Count >= 10)
                {
                    LIST_Messages.Items.Clear();
                }
                LIST_Messages.Items.Add(new
                {
                    Tag         = TagMessage,
                    IpAddress   = FromIP,
                    MessageType = Message.MessageType,
                    Length      = Content.Length,
                });
            });
        }