diff --git a/LauncherDM/LauncherDM.csproj b/LauncherDM/LauncherDM.csproj index 53eb732..1988c32 100644 --- a/LauncherDM/LauncherDM.csproj +++ b/LauncherDM/LauncherDM.csproj @@ -86,15 +86,10 @@ - + True True - Resource.resx - - - True - True - ResourceEng.resx + Resources.resx True @@ -104,13 +99,12 @@ - - ResXFileCodeGenerator - Resource.Designer.cs + + Resources.resx - + ResXFileCodeGenerator - ResourceEng.Designer.cs + Resources.Designer.cs diff --git a/ServerTCP/Resources/Resource.rus.Designer.cs b/LauncherDM/Properties/Resources.Designer.cs similarity index 84% rename from ServerTCP/Resources/Resource.rus.Designer.cs rename to LauncherDM/Properties/Resources.Designer.cs index e69000c..44103c6 100644 --- a/ServerTCP/Resources/Resource.rus.Designer.cs +++ b/LauncherDM/Properties/Resources.Designer.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -namespace ServerTCP.Resources { +namespace LauncherDM.Properties { using System; @@ -22,14 +22,14 @@ namespace ServerTCP.Resources { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resource_rus { + internal class Resources { private static global::System.Resources.ResourceManager resourceMan; private static global::System.Globalization.CultureInfo resourceCulture; [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resource_rus() { + internal Resources() { } /// @@ -39,7 +39,7 @@ internal Resource_rus() { internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ServerTCP.Resources.Resource_rus", typeof(Resource_rus).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LauncherDM.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; @@ -59,5 +59,14 @@ internal Resource_rus() { resourceCulture = value; } } + + /// + /// Ищет локализованную строку, похожую на Повторное подключение через {0} мс. + /// + internal static string Reconnection { + get { + return ResourceManager.GetString("Reconnection", resourceCulture); + } + } } } diff --git a/LauncherDM/Properties/Resources.en.resx b/LauncherDM/Properties/Resources.en.resx new file mode 100644 index 0000000..31fc9bc --- /dev/null +++ b/LauncherDM/Properties/Resources.en.resx @@ -0,0 +1,17 @@ + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Reconnect after {0} ms + + \ No newline at end of file diff --git a/LauncherDM/Source/Resources/Resource.resx b/LauncherDM/Properties/Resources.resx similarity index 96% rename from LauncherDM/Source/Resources/Resource.resx rename to LauncherDM/Properties/Resources.resx index 4fdb1b6..7034a3c 100644 --- a/LauncherDM/Source/Resources/Resource.resx +++ b/LauncherDM/Properties/Resources.resx @@ -98,4 +98,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Повторное подключение через {0} мс + \ No newline at end of file diff --git a/LauncherDM/Services/Interfaces/ILoadingWindowService.cs b/LauncherDM/Services/Interfaces/ILoadingWindowService.cs index b0fd2f4..5a1c3d1 100644 --- a/LauncherDM/Services/Interfaces/ILoadingWindowService.cs +++ b/LauncherDM/Services/Interfaces/ILoadingWindowService.cs @@ -6,6 +6,8 @@ interface ILoadingWindowService string GetTitle(); + bool CheckUpdate(); + string DescInfoConnect(); } } diff --git a/LauncherDM/Services/LoadingWindowService.cs b/LauncherDM/Services/LoadingWindowService.cs index e1d27dd..e0ae158 100644 --- a/LauncherDM/Services/LoadingWindowService.cs +++ b/LauncherDM/Services/LoadingWindowService.cs @@ -13,11 +13,8 @@ public bool CheckRequestServer() if (serverRequest is null) serverRequest = new ServerRequestService(); - //var requestMessageServer = serverRequest.SendMessageRequest(MessageHeader.MessageType.Check); - //return requestMessageServer.Message == "1"; - - var a = serverRequest.SendMessageRequest(MessageHeader.MessageType.Token); - return false; + var requestMessageServer = serverRequest.SendMessageRequest(MessageHeader.MessageType.Check); + return requestMessageServer.Message.ToString() == "1"; } public string GetTitle() @@ -29,6 +26,11 @@ public string GetTitle() return requestMessageServer.Message.ToString(); } + public bool CheckUpdate() + { + throw new NotImplementedException(); + } + public string DescInfoConnect() { if (serverRequest is null) diff --git a/LauncherDM/Source/Resources/ResourceEng.Designer.cs b/LauncherDM/Source/Resources/ResourceEng.Designer.cs deleted file mode 100644 index f97638a..0000000 --- a/LauncherDM/Source/Resources/ResourceEng.Designer.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace LauncherDM.Source.Resources { - using System; - - - /// - /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. - /// - // Этот класс создан автоматически классом StronglyTypedResourceBuilder - // с помощью такого средства, как ResGen или Visual Studio. - // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen - // с параметром /str или перестройте свой проект VS. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class ResourceEng { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal ResourceEng() { - } - - /// - /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LauncherDM.Source.Resources.ResourceEng", typeof(ResourceEng).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Перезаписывает свойство CurrentUICulture текущего потока для всех - /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - } -} diff --git a/LauncherDM/Source/Resources/ResourceEng.resx b/LauncherDM/Source/Resources/ResourceEng.resx deleted file mode 100644 index 4fdb1b6..0000000 --- a/LauncherDM/Source/Resources/ResourceEng.resx +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/LauncherDM/ViewModels/LoadingWindowViewModel.cs b/LauncherDM/ViewModels/LoadingWindowViewModel.cs index 7f04b71..6e5895f 100644 --- a/LauncherDM/ViewModels/LoadingWindowViewModel.cs +++ b/LauncherDM/ViewModels/LoadingWindowViewModel.cs @@ -83,29 +83,35 @@ private void Load() { if (checkNetwork.CheckingNetworkConnection()) { - if (Server.CheckRequestServer()) + int countMs = 1000; + while (true) { - DescInfoConnect = Server.GetTitle(); - - Thread.Sleep(5000); - _loadingWindow.Dispatcher.Invoke(() => + if (Server.CheckRequestServer()) { - IDialogWindowService windowService = new DialogWindowService(); - windowService.OpenWindow(this); - _loadingWindow.Hide(); - }); - } - else - { - IDialogMessageBoxService dialogMessageBox = new DialogMessageBoxService(); - dialogMessageBox.DialogShow("s","s"); + DescInfoConnect = Server.GetTitle(); + + Thread.Sleep(5000); + _loadingWindow.Dispatcher.Invoke(() => + { + IDialogWindowService windowService = new DialogWindowService(); + windowService.OpenWindow(this); + _loadingWindow.Hide(); + }); + } + else + { + IDialogMessageBoxService dialogMessageBox = new DialogMessageBoxService(); + dialogMessageBox.DialogShow("s", "s"); + } } } else + { _loadingWindow.Dispatcher.Invoke(() => { Environment.Exit(0); }); + } }); } } diff --git a/ServerTCP/MessageHeader.cs b/ServerTCP/MessageHeader.cs index 3528448..6ab6a12 100644 --- a/ServerTCP/MessageHeader.cs +++ b/ServerTCP/MessageHeader.cs @@ -87,12 +87,14 @@ public MessageHeader(MessageType type, int length = 0) public byte[] MessageToArray(bool loadToken = false) { byte[] message; - var result = loadToken ? new byte[Length + TokenLength + LengthAndDataType] : new byte[Length + LengthAndDataType]; + int lengthByte = loadToken ? Length + TokenLength + LengthAndDataType : Length + LengthAndDataType; + + var result = new byte[lengthByte]; result[0] = (byte)Type; result[1] = (byte)Language; result[2] = loadToken ? (byte)1 : (byte)0; // 1 - токен есть | 0 - без токена(размер токена 10 байт) - if(Length > 0) - BinaryPrimitives.WriteInt32LittleEndian(result.AsSpan()[3..5], Length); + if (Length > 0) + BinaryPrimitives.WriteInt32LittleEndian(result.AsSpan().Slice(3, 5), lengthByte); switch (Type) { @@ -144,8 +146,14 @@ internal byte[] MessageServerToArray(bool loadToken = false) result[0] = (byte)Type; result[1] = (byte)Language; result[2] = loadToken ? (byte)1 : (byte)0; // 1 - токен есть | 0 - без токена(размер токена 10 байт) - if (Length > 0) - BinaryPrimitives.WriteInt32LittleEndian(result.AsSpan().Slice(3,5), lengthByte); + lengthByte += 1000; + var bytes = BitConverter.GetBytes(lengthByte).Where(x => x != 0).ToArray(); + + if (bytes.Length > 3) + throw new ArgumentException(nameof(bytes)); + + Array.Copy(bytes, 0, result, 3, bytes.Length); + switch (Type) { @@ -170,31 +178,29 @@ internal byte[] MessageServerToArray(bool loadToken = false) case MessageType.Data: message = Encoding.UTF8.GetBytes("1"); break; + case MessageType.Check: + message = Encoding.UTF8.GetBytes(Message.ToString()); + break; default: message = Encoding.UTF8.GetBytes("1"); break; } - if (loadToken) - Array.Copy(message ?? [0], 0, result, LengthAndDataType, Length); - else - Array.Copy(message ?? [0], 0, result, LengthAndDataType, Length); - + Array.Copy(message ?? [0], 0, result, LengthAndDataType, Length); return result; } /// - /// Распаковка сообщения + /// Распаковка сообщения для клиента /// /// /// public static MessageHeader FromArray(ReadOnlySpan buffer) { - switch ((MessageType)buffer[0]) { case MessageHeader.MessageType.Check: - return new MessageHeader((MessageType)buffer[0], (Languages)buffer[1], 0); + return new MessageHeader(Encoding.UTF8.GetString(buffer.ToArray(), LengthAndDataType, buffer.Length - LengthAndDataType), (MessageType)buffer[0], 0); break; case MessageHeader.MessageType.Session: return null; @@ -214,15 +220,38 @@ public static MessageHeader FromArray(ReadOnlySpan buffer) return null; break; } + } - - - //if (buffer.Length <= LengthAndDataType) - // return new MessageHeader((MessageType)buffer[0], (Languages)buffer[1], 0); - //else if (buffer[2] == 1) - // return new MessageHeader(Encoding.UTF8.GetString(buffer.ToArray(), LengthAndDataType, buffer.Length - LengthAndDataType), (MessageType)buffer[0], BinaryPrimitives.ReadInt32LittleEndian(buffer[1..])); - //else - // return new MessageHeader(Encoding.UTF8.GetString(buffer.ToArray(), LengthAndDataType, buffer.Length - LengthAndDataType), (MessageType)buffer[0], BinaryPrimitives.ReadInt32LittleEndian(buffer[1..])); + /// + /// Распаковка сообщения для сервера + /// + /// + /// + internal static MessageHeader ServerFromArray(ReadOnlySpan buffer) + { + switch ((MessageType)buffer[0]) + { + case MessageHeader.MessageType.Check: + return new MessageHeader((MessageType)buffer[0], (Languages)buffer[1], 0); + break; + case MessageHeader.MessageType.Session: + return null; + break; + case MessageHeader.MessageType.Token: + //return new MessageHeader(Encoding.UTF8.GetString(buffer.ToArray(), LengthAndDataType, buffer.Length - LengthAndDataType), (MessageType)buffer[0], BinaryPrimitives.ReadInt32LittleEndian(buffer[1..])); // сохраняем, добавляем данные. Данные передаются в кодированном формате, будем использовать кодировку UTF8, раскодируем байты + return new MessageHeader((MessageType)buffer[0], (Languages)buffer[1], Encoding.UTF8.GetString(buffer.ToArray(), LengthAndDataType, buffer.Length - LengthAndDataType), buffer[3] + buffer[4] + buffer[5]); + break; + case MessageHeader.MessageType.Registration: + case MessageHeader.MessageType.Log: + case MessageHeader.MessageType.File: + case MessageHeader.MessageType.Photo: + case MessageHeader.MessageType.Data: + case MessageHeader.MessageType.Title: + case MessageHeader.MessageType.TitleLoading: + default: + return null; + break; + } } } } diff --git a/LauncherDM/Source/Resources/Resource.Designer.cs b/ServerTCP/Properties/Resources.Designer.cs similarity index 86% rename from LauncherDM/Source/Resources/Resource.Designer.cs rename to ServerTCP/Properties/Resources.Designer.cs index 9dc067d..bf431f9 100644 --- a/LauncherDM/Source/Resources/Resource.Designer.cs +++ b/ServerTCP/Properties/Resources.Designer.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -namespace LauncherDM.Source.Resources { +namespace ServerTCP.Properties { using System; @@ -22,14 +22,14 @@ namespace LauncherDM.Source.Resources { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resource { + internal class Resources { private static global::System.Resources.ResourceManager resourceMan; private static global::System.Globalization.CultureInfo resourceCulture; [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resource() { + internal Resources() { } /// @@ -39,7 +39,7 @@ internal Resource() { internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LauncherDM.Source.Resources.Resource", typeof(Resource).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ServerTCP.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; @@ -59,5 +59,14 @@ internal Resource() { resourceCulture = value; } } + + /// + /// Ищет локализованную строку, похожую на . + /// + internal static string Test { + get { + return ResourceManager.GetString("Test", resourceCulture); + } + } } } diff --git a/ServerTCP/Properties/Resources.en.resx b/ServerTCP/Properties/Resources.en.resx new file mode 100644 index 0000000..bed2acc --- /dev/null +++ b/ServerTCP/Properties/Resources.en.resx @@ -0,0 +1,17 @@ + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + s + + \ No newline at end of file diff --git a/ServerTCP/Resources/Resource.eng.resx b/ServerTCP/Properties/Resources.resx similarity index 98% rename from ServerTCP/Resources/Resource.eng.resx rename to ServerTCP/Properties/Resources.resx index 4fdb1b6..402e273 100644 --- a/ServerTCP/Resources/Resource.eng.resx +++ b/ServerTCP/Properties/Resources.resx @@ -98,4 +98,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + s + \ No newline at end of file diff --git a/ServerTCP/Resources/Resource.rus.resx b/ServerTCP/Resources/Resource.rus.resx deleted file mode 100644 index 4fdb1b6..0000000 --- a/ServerTCP/Resources/Resource.rus.resx +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/ServerTCP/ServerTCP.csproj b/ServerTCP/ServerTCP.csproj index e5b971d..c27229c 100644 --- a/ServerTCP/ServerTCP.csproj +++ b/ServerTCP/ServerTCP.csproj @@ -12,17 +12,20 @@ - + True True - Resource.rus.resx + Resources.resx - + + Resources.resx + + ResXFileCodeGenerator - Resource.rus.Designer.cs + Resources.Designer.cs