private void LoginThreadFunc(object parameters) { LoginThreadFuncParam param = (LoginThreadFuncParam)parameters; try { Dispatcher.Invoke(() => { MainChat page = new MainChat(this); selfClient.Tag = page; SelfClient.ConnectTo(new IPEndPoint(param.IPAddress, param.Port), param.BufferSize); SelfClient.Send(Encoding.UTF8.GetBytes(JsonSerializer.ConvertToText(JsonSerializer.Create(new TransPackage() { Name = NickName, PackageType = ConstDef.Login, Content = PasswordBox.Password })))); SelfClient.ReceivedMsg += page.SelfClient_ReceivedMsg; SelfClient.Disconnected += page.SelfClient_Disconnected; Program.Navigate(page); }); } catch { Dispatcher.Invoke(() => { loginWaitThread.Abort(); loginThread = null; ConnectButton.IsEnabled = true; ConnectButton.Content = "Connect"; MessageBox.Show("Communicate failed, please check your network connection.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); }); } }
private static void InitializeUser(string JsonPath) { if (File.Exists(JsonPath)) { StreamReader streamReader = new StreamReader(JsonPath); JsonData jsonData = JsonSerializer.Parse(streamReader.ReadToEnd()); foreach (JsonData jsonData1 in jsonData) { UserList.Add(JsonSerializer.ConvertToInstance <User>(jsonData1)); } streamReader.BaseStream.Close(); streamReader.Close(); } else { JsonData jsonData = new JsonData() { DataType = JsonDataType.Array, content = new List <JsonData>() }; foreach (User usr in UserList) { jsonData.Add(JsonSerializer.Create(usr)); } StreamWriter streamWriter = new StreamWriter(JsonPath, false); streamWriter.Write(JsonSerializer.ConvertToText(jsonData)); streamWriter.Flush(); streamWriter.BaseStream.Close(); } }
private bool TrySendPackage(TransPackage package) { JsonData jsonToSend = JsonSerializer.Create(package); string textToSend = JsonSerializer.ConvertToText(jsonToSend); byte[] bytesToSend = Encoding.UTF8.GetBytes(textToSend); return(TrySendData(bytesToSend)); }
} // 解释指令 private static void BoardcastPackage(TransPackage package) { JsonData jsonData = JsonSerializer.Create(package); string jsonText = JsonSerializer.ConvertToText(jsonData); byte[] bytes = Encoding.UTF8.GetBytes(jsonText); BoardcastData(bytes, bytes.Length); } // 广播包
private static void DealAdminCommand(TransPackage recvPackage, Socket socket) { PrintLine($"{recvPackage.Name} try to execute a command on this server."); if (!AdminGuid.Contains(recvPackage.ClientGuid)) { socket.SendTOC( Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = "Server", Content = $"You don't have right to execute command on remote server.", ClientGuid = "Server", PackageType = ConstDef.NormalMessage })))); } else { DealCommand(recvPackage.Content); socket.SendTOC( Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = "Server", Content = $"Command executed!", ClientGuid = "Server", PackageType = ConstDef.NormalMessage })))); int count = 0; Socket socket1 = socket; bool p(string a) { count += 1; if (count == 2) { //SafeWriteHook -= p; } socket1.Send( Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = "Server", Content = $"Return:{a}", ClientGuid = "Server", PackageType = ConstDef.NormalMessage })))); return(true); } //SafeWriteHook += p; } }
private static void SendMustLoginInfo(Socket socket) { socket.SendTOC( Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = "Server(AutoReplay)", Content = $"You must be logged in to send messages on the remote server.", ClientGuid = "Server", PackageType = ConstDef.Verification })))); }
private static void WelcomeUser(TransPackage recvPackage, Socket socket) { socket.SendTOC( Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = "Server(AutoReplay)", Content = $"Welcome!{recvPackage.Name}", ClientGuid = "Server", PackageType = ConstDef.NormalMessage })))); }
private static void SendErrorPasswordNotCorrent(Socket socket) { socket.SendTOC( Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = "Server", Content = $"Password error.", ClientGuid = "Server", PackageType = ConstDef.NormalMessage })))); }
} // 广播数据 private static void DrawAttention(string senderName, string senderGuid) { byte[] attentionData = Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = senderName, Content = null, ClientGuid = senderGuid, PackageType = ConstDef.DrawAttention }))); BoardcastData(attentionData, attentionData.Length); } // 发送吸引注意力
private static void ReportChannelOnline(TransPackage recvPackage, Socket socket) { socket.SendTOC( Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = "Server", Content = $"Online: {clients.Count}, Your IP Address: {((IPEndPoint)socket.RemoteEndPoint).Address}", ClientGuid = "Server", PackageType = ConstDef.ReportChannelOnline })))); Console.ForegroundColor = ConsoleColor.DarkGray; PrintLine($"Online Info Req: Sender: {recvPackage.Name}"); }
private static void ChangeChannelName(TransPackage recvPackage, Socket socket) { socket.SendTOC( Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = "Server", Content = channelName, ClientGuid = "Server", PackageType = ConstDef.ChangeChannelName })))); Console.ForegroundColor = ConsoleColor.DarkGray; PrintLine($"Channel Name Req: Sender: {recvPackage.Name}"); }
private static void SendErrorUserExisted(Socket socket) { socket.SendTOC( Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = "Server(AutoReplay)", Content = $"Error:This user name existed.", ClientGuid = "Server", PackageType = ConstDef.Verification } ) ) ) ); }
private static void SendErrorUserDoesntExist(Socket socket) { socket.SendTOC( Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = "Server", Content = $"Error:This user doesn't exist.", ClientGuid = "Server", PackageType = ConstDef.NormalMessage } ) ) ) ); }
private static void SaveUser(string JsonPath) { JsonData jsonData = new JsonData() { DataType = JsonDataType.Array, content = new List <JsonData>() }; foreach (User usr in UserList) { jsonData.Add(JsonSerializer.Create(usr)); } StreamWriter streamWriter = new StreamWriter(JsonPath, false); streamWriter.Write(JsonSerializer.ConvertToText(jsonData)); streamWriter.Flush(); streamWriter.BaseStream.Close(); }
public MainChat(Login loginWindow) { InitializeComponent(); WindowParent = loginWindow; SelfClient = loginWindow.SelfClient; getOnlineInfoPackageData = Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = WindowParent.NickName, Content = null, ClientGuid = WindowParent.ClientGuid, PackageType = ConstDef.ReportChannelOnline }))); DataObject.AddPastingHandler(InputBox, InputBox_OnPaste); }
private static void ReportTerminalOutput(TransPackage recvPackage, Socket socket) { PrintLine($"{recvPackage.Name} try to hook terminal on this server."); if (!AdminGuid.Contains(recvPackage.ClientGuid)) { socket.SendTOC( Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = "Server", Content = $"You don't have right to hook terminal on remote server.", ClientGuid = "Server", PackageType = ConstDef.NormalMessage })))); } else { int count = 0; int l = int.Parse(recvPackage.Content); Socket socket1 = socket; bool p(string a) { count += 1; socket1.SendTOC( Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = "Server", Content = $"Return:{a}", ClientGuid = "Server", PackageType = ConstDef.NormalMessage })))); return(true); } //SafeWriteHook += p; } }
private static void DealUnloginUser(TransPackage recvPackage, Socket socket) { if (recvPackage.PackageType == ConstDef.NormalMessage) { string[] args = recvPackage.Content.Split(' '); if (args.Length == 2) { switch (args[0]) { case "/login": recvPackage.PackageType = ConstDef.Login; recvPackage.Content = args[1]; break; default: SendMustLoginInfo(socket); return; } } else { SendMustLoginInfo(socket); return; } } User user = UserList.Find((u) => u.Name == recvPackage.Name); switch (recvPackage.PackageType) { case ConstDef.Login: if (user != null) { if (user.PasswordHash == recvPackage.Content.GetHashCode()) { socket.SendTOC( Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = "Server", Content = user.Guid, ClientGuid = "Server", PackageType = ConstDef.Login })))); WelcomeUser(recvPackage, socket); } else { SendErrorPasswordNotCorrent(socket); } } else { SendErrorUserDoesntExist(socket); } break; case ConstDef.Register: if (user == null) { User newuser = CreateUser(recvPackage); socket.SendTOC( Encoding.UTF8.GetBytes( JsonSerializer.ConvertToText( JsonSerializer.Create(new TransPackage() { Name = "Server", Content = newuser.Guid, ClientGuid = "Server", PackageType = ConstDef.Login })))); WelcomeUser(recvPackage, socket); } else { SendErrorUserExisted(socket); } break; default: SendMustLoginInfo(socket); return; } return; }