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