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(); }
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(); }
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, }); }); }