diff --git a/LauncherDM/Properties/Resources.en.resx b/LauncherDM/Properties/Resources.en.resx
index 544325a..032fba7 100644
--- a/LauncherDM/Properties/Resources.en.resx
+++ b/LauncherDM/Properties/Resources.en.resx
@@ -15,7 +15,7 @@
Reconnect after {0} ms...
- The server is unavailable.
+ The server is unavailable (offline mode).
Error!
diff --git a/LauncherDM/Properties/Resources.resx b/LauncherDM/Properties/Resources.resx
index 6dc7170..7cc3ac5 100644
--- a/LauncherDM/Properties/Resources.resx
+++ b/LauncherDM/Properties/Resources.resx
@@ -102,7 +102,7 @@
Повторное подключение через {0} мс...
- Сервер недоступен.
+ Сервер недоступен (автономный режим).
Ошибка!
diff --git a/LauncherDM/Services/Interfaces/ILoadingWindowService.cs b/LauncherDM/Services/Interfaces/ILoadingWindowService.cs
index 5a1c3d1..bdc16d0 100644
--- a/LauncherDM/Services/Interfaces/ILoadingWindowService.cs
+++ b/LauncherDM/Services/Interfaces/ILoadingWindowService.cs
@@ -7,7 +7,5 @@ interface ILoadingWindowService
string GetTitle();
bool CheckUpdate();
-
- string DescInfoConnect();
}
}
diff --git a/LauncherDM/Services/LoadingWindowService.cs b/LauncherDM/Services/LoadingWindowService.cs
index 3f6e30c..b89f58e 100644
--- a/LauncherDM/Services/LoadingWindowService.cs
+++ b/LauncherDM/Services/LoadingWindowService.cs
@@ -7,40 +7,30 @@ namespace LauncherDM.Services
{
class LoadingWindowService : ILoadingWindowService
{
- private IServerRequestService serverRequest;
+ private IServerRequestService _serverRequest;
- public bool CheckRequestServer()
+ public LoadingWindowService(ServerRequestService serverRequest)
{
- if (serverRequest is null)
- serverRequest = new ServerRequestService();
+ _serverRequest = serverRequest;
+ }
- var requestMessageServer = serverRequest.SendMessageRequest(MessageHeader.MessageType.Check);
+ public bool CheckRequestServer()
+ {
+ var requestMessageServer = _serverRequest.SendMessageRequest(MessageHeader.MessageType.Check);
return requestMessageServer?.Message.ToString() == "1";
}
public string GetTitle()
{
- if (serverRequest is null)
- serverRequest = new ServerRequestService();
-
- var requestMessageServer = serverRequest.SendMessageRequest(MessageHeader.MessageType.TitleLoading);
- return requestMessageServer.Message.ToString();
+ var requestMessageServer = _serverRequest.SendMessageRequest(MessageHeader.MessageType.TitleLoading);
+ return requestMessageServer?.Message.ToString();
}
public bool CheckUpdate()
{
- var curver = Assembly.GetExecutingAssembly().GetName().Version?.ToString();
- return false;
- }
-
- public string DescInfoConnect()
- {
- if (serverRequest is null)
- serverRequest = new ServerRequestService();
-
- var requestMessageServer = serverRequest.SendMessageRequest(string.Empty,
- MessageHeader.MessageType.Check, string.Empty.Length);
- return requestMessageServer.Message.ToString();
+ var version = Assembly.GetExecutingAssembly().GetName().Version?.ToString();
+ var requestMessageServer = _serverRequest.SendMessageRequest(MessageHeader.MessageType.Version);
+ return requestMessageServer?.Message.ToString() == version;
}
}
}
diff --git a/LauncherDM/Services/ServerRequestService.cs b/LauncherDM/Services/ServerRequestService.cs
index 21513b3..8386495 100644
--- a/LauncherDM/Services/ServerRequestService.cs
+++ b/LauncherDM/Services/ServerRequestService.cs
@@ -14,16 +14,16 @@ namespace LauncherDM.Services
///
class ServerRequestService : IServerRequestService
{
- private static readonly string ip = DataInfo.Ip;
- private static readonly int port = DataInfo.Port;
+ private static readonly string _ip = DataInfo.Ip;
+ private static readonly int _port = DataInfo.Port;
- private IPAddress ipAddress;
- private IPEndPoint endPoint;
+ private IPAddress _ipAddress;
+ private IPEndPoint _endPoint;
public ServerRequestService()
{
- ipAddress = IPAddress.Parse(ip);
- endPoint = new IPEndPoint(ipAddress, port);
+ _ipAddress = IPAddress.Parse(_ip);
+ _endPoint = new IPEndPoint(_ipAddress, _port);
}
public MessageHeader SendMessageRequest(string data, MessageHeader.MessageType messageType, int length)
@@ -34,9 +34,9 @@ public MessageHeader SendMessageRequest(string data, MessageHeader.MessageType m
while (true)
{
tcpClient = new TcpClient();
- tcpClient.Connect(endPoint);
+ tcpClient.Connect(_endPoint);
- var messageHeader = new MessageHeader(data, messageType, length + MessageHeader.LengthAndDataType);
+ var messageHeader = new MessageHeader(data, messageType);
byte[] headerBytes = messageHeader.MessageToArray();
NetworkStream tcpStream = tcpClient.GetStream();
@@ -76,16 +76,16 @@ public MessageHeader SendMessageRequest(MessageHeader.MessageType messageType)
while (true)
{
tcpClient = new TcpClient();
- tcpClient.Connect(endPoint);
+ tcpClient.Connect(_endPoint);
- var messageHeader = new MessageHeader(messageType, 0);
+ var messageHeader = new MessageHeader(messageType);
byte[] headerBytes = messageHeader.MessageToArray();
NetworkStream tcpStream = tcpClient.GetStream();
tcpStream.Write(headerBytes);
do
{
- byte[] getBytes = new byte[tcpClient.ReceiveBufferSize];
+ var getBytes = new byte[tcpClient.ReceiveBufferSize];
var lengthByte = tcpStream.Read(getBytes, 0, tcpClient.ReceiveBufferSize);
return MessageHeader.FromArray(getBytes.Take(lengthByte).ToArray());
} while (tcpStream.DataAvailable);
diff --git a/LauncherDM/Styles/Other/ContextMenuStyle.xaml b/LauncherDM/Styles/Other/ContextMenuStyle.xaml
index 486aff0..c5959a0 100644
--- a/LauncherDM/Styles/Other/ContextMenuStyle.xaml
+++ b/LauncherDM/Styles/Other/ContextMenuStyle.xaml
@@ -2,6 +2,22 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
\ No newline at end of file
diff --git a/LauncherDM/ViewModels/LoadingWindowViewModel.cs b/LauncherDM/ViewModels/LoadingWindowViewModel.cs
index a6d12c6..72ec7d6 100644
--- a/LauncherDM/ViewModels/LoadingWindowViewModel.cs
+++ b/LauncherDM/ViewModels/LoadingWindowViewModel.cs
@@ -8,8 +8,6 @@
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
-using LauncherDM.Properties;
-using System.Diagnostics;
namespace LauncherDM.ViewModels
{
@@ -104,7 +102,7 @@ public LoadingWindowViewModel(ResourcesHelperService resourcesHelper)
private void Loading()
{
ICheckNetworkService checkNetwork = new CheckNetworkService();
- ILoadingWindowService server = new LoadingWindowService();
+ ILoadingWindowService server = new LoadingWindowService(new ServerRequestService());
Task.Run(() =>
{
@@ -124,6 +122,7 @@ private void Loading()
server.CheckUpdate();
Thread.Sleep(5000);
OpenWindow();
+ break;
}
else
{
@@ -131,16 +130,16 @@ private void Loading()
{
IDialogMessageBoxService dialogMessageBox = new DialogMessageBoxService();
dialogMessageBox.DialogShow(_resourcesHelper.LocalizationGet("Error"), _resourcesHelper.LocalizationGet("ServerClose"));
+ OpenWindow();
break;
}
countMs += 2000;
DescInfoConnect = string.Format(CultureInfo.InvariantCulture,
_resourcesHelper.LocalizationGet("Reconnection"), countMs);
- Thread.Sleep(5000);
+ Thread.Sleep(countMs);
}
}
- OpenWindow();
});
}
diff --git a/ServerTCP/DataBase/DataBaseCommands.cs b/ServerTCP/DataBase/DataBaseCommands.cs
index 735a4ce..790ebd1 100644
--- a/ServerTCP/DataBase/DataBaseCommands.cs
+++ b/ServerTCP/DataBase/DataBaseCommands.cs
@@ -10,11 +10,8 @@ public static void Insert(object table, MessageHeader.MessageType messageType)
{
using (var db = new ApplicationContext())
{
- if (db.Database.CanConnect())
- ConsoleExtension.WriteLineColor("База данных доступна.", ConsoleColor.DarkGreen);
- else
- ConsoleExtension.WriteLineColor("База данных не доступна!", ConsoleColor.DarkRed);
-
+ CheckConnect(db);
+
switch (messageType)
{
case MessageHeader.MessageType.Registration:
@@ -26,5 +23,37 @@ public static void Insert(object table, MessageHeader.MessageType messageType)
}
}
+ public static object Select(MessageHeader.MessageType messageType)
+ {
+ using (var db = new ApplicationContext())
+ {
+ CheckConnect(db);
+ object result = null;
+ switch (messageType)
+ {
+ case MessageHeader.MessageType.Version:
+ var appWPF = db.apps.Where(x => x.parametername == "wpfDMVersion").ToArray();
+ result = appWPF[0].parametervalue;
+ break;
+ default:
+ result = null;
+ break;
+ }
+
+ if (result is null)
+ throw new ArgumentNullException(nameof(result));
+
+ return result;
+ }
+ }
+
+ private static void CheckConnect(ApplicationContext db)
+ {
+ if (db.Database.CanConnect())
+ ConsoleExtension.WriteLineColor("База данных доступна.", ConsoleColor.DarkGreen);
+ else
+ ConsoleExtension.WriteLineColor("База данных не доступна!", ConsoleColor.DarkRed);
+ }
+
}
}
diff --git a/ServerTCP/MessageHeader.cs b/ServerTCP/MessageHeader.cs
index 438684c..f435bc8 100644
--- a/ServerTCP/MessageHeader.cs
+++ b/ServerTCP/MessageHeader.cs
@@ -18,6 +18,7 @@ public enum MessageType : byte
Session,
Token,
Registration,
+ Version,
Log,
File,
Photo,
@@ -31,46 +32,39 @@ public enum MessageType : byte
public MessageLanguages.Languages Language { get; }
- public int Length { get; }
-
public object Message { get; }
public string Token { get; }
- public MessageHeader(MessageType type, MessageLanguages.Languages lang, string token, int length)
+ public MessageHeader(MessageType type, MessageLanguages.Languages lang, string token)
{
Type = type;
Language = lang;
Token = token;
- Length = length;
}
- public MessageHeader(object message, MessageType type, MessageLanguages.Languages lang, string token, int length)
+ public MessageHeader(object message, MessageType type, MessageLanguages.Languages lang, string token)
{
Message = message;
Type = type;
Language = lang;
Token = token;
- Length = length;
}
- public MessageHeader(object message, MessageType type, int length)
+ public MessageHeader(object message, MessageType type)
{
Message = message;
Type = type;
- Length = length;
}
- public MessageHeader(MessageType type, MessageLanguages.Languages lang, int length = 0)
+ public MessageHeader(MessageType type, MessageLanguages.Languages lang)
{
Type = type;
Language = lang;
- Length = length;
}
- public MessageHeader(MessageType type, int length = 0)
+ public MessageHeader(MessageType type)
{
Type = type;
- Length = length;
}
///
@@ -80,48 +74,32 @@ public MessageHeader(MessageType type, int length = 0)
///
public byte[] MessageToArray(bool loadToken = false)
{
- byte[] message;
- int lengthByte = loadToken ? Length + TokenLength + LengthAndDataType : Length + LengthAndDataType;
+ var message = new byte[]{};
+
+ //switch (Type)
+ //{
+ // default:
+ // return result;
+ // break;
+ //}
+
+ var messageLength = message.Length;
+ int lengthByte = loadToken ? messageLength + TokenLength + LengthAndDataType : messageLength + 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)
+ if (messageLength > 0)
BinaryPrimitives.WriteInt32LittleEndian(result.AsSpan().Slice(3, 5), lengthByte);
- switch (Type)
- {
- case MessageType.Session:
- message = Encoding.UTF8.GetBytes("1");
- break;
- case MessageType.Registration:
- message = Encoding.UTF8.GetBytes("1");
- break;
- case MessageType.Log:
- message = Encoding.UTF8.GetBytes("1");
- break;
- case MessageType.File:
- message = Encoding.UTF8.GetBytes("1");
- break;
- case MessageType.Photo:
- message = Encoding.UTF8.GetBytes("1");
- break;
- case MessageType.Data:
- message = Encoding.UTF8.GetBytes("1");
- break;
- default:
- return result;
- break;
- }
-
- if (loadToken)
- {
- Array.Copy(Encoding.UTF8.GetBytes("1234567890"), 0, result, LengthAndDataType, TokenLength);
- Array.Copy(message ?? [0], 0, result, LengthAndDataType + TokenLength, Length);
- }
- else
- Array.Copy(message ?? [0], 0, result, 6, Length);
+ //if (loadToken)
+ //{
+ // Array.Copy(Encoding.UTF8.GetBytes("1234567890"), 0, result, LengthAndDataType, TokenLength);
+ // Array.Copy(message ?? [0], 0, result, LengthAndDataType + TokenLength, Length);
+ //}
+ //else
+ // Array.Copy(message ?? [0], 0, result, 6, Length);
return result;
}
@@ -133,45 +111,15 @@ public byte[] MessageToArray(bool loadToken = false)
///
internal byte[] MessageServerToArray(bool loadToken = false)
{
- byte[] message;
- 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 байт)
- 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);
-
+ var message = new byte[] { };
switch (Type)
{
- case MessageType.Session:
- message = Encoding.UTF8.GetBytes("1");
- break;
case MessageType.Token:
message = Encoding.UTF8.GetBytes("1234567890");
break;
- case MessageType.Registration:
- message = Encoding.UTF8.GetBytes("1");
- break;
- case MessageType.Log:
- message = Encoding.UTF8.GetBytes("1");
- break;
- case MessageType.File:
- message = Encoding.UTF8.GetBytes("1");
- break;
- case MessageType.Photo:
- message = Encoding.UTF8.GetBytes("1");
- break;
- case MessageType.Data:
- message = Encoding.UTF8.GetBytes("1");
- break;
+ case MessageType.TitleLoading:
+ case MessageType.Version:
case MessageType.Check:
message = Encoding.UTF8.GetBytes(Message.ToString());
break;
@@ -180,12 +128,25 @@ internal byte[] MessageServerToArray(bool loadToken = false)
break;
}
- Array.Copy(message ?? [0], 0, result, LengthAndDataType, Length);
+ var messageLength = message.Length;
+ var lengthByte = loadToken ? messageLength + TokenLength + LengthAndDataType : messageLength + LengthAndDataType;
+ var result = new byte[lengthByte];
+ result[0] = (byte)Type;
+ result[1] = (byte)Language;
+ result[2] = loadToken ? (byte)1 : (byte)0; // 1 - токен есть | 0 - без токена(размер токена 10 байт)
+ 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);
+
+ Array.Copy(message ?? [0], 0, result, LengthAndDataType, messageLength);
return result;
}
///
- /// Распаковка сообщения для клиента
+ /// Распаковка сообщения
///
///
///
@@ -193,58 +154,25 @@ public static MessageHeader FromArray(ReadOnlySpan buffer)
{
switch ((MessageType)buffer[0])
{
- case MessageHeader.MessageType.Check:
- return new MessageHeader(Encoding.UTF8.GetString(buffer.ToArray(), LengthAndDataType, buffer.Length - LengthAndDataType), (MessageType)buffer[0], 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], (MessageLanguages.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;
- }
- }
-
- ///
- /// Распаковка сообщения для сервера
- ///
- ///
- ///
- internal static MessageHeader ServerFromArray(ReadOnlySpan buffer)
- {
- switch ((MessageType)buffer[0])
- {
+ case MessageHeader.MessageType.Version:
case MessageHeader.MessageType.Check:
- return new MessageHeader((MessageType)buffer[0], (MessageLanguages.Languages)buffer[1], 0);
- break;
- case MessageHeader.MessageType.Session:
- return null;
+ return new MessageHeader(Encoding.UTF8.GetString(buffer.ToArray(), LengthAndDataType, buffer.Length - LengthAndDataType), (MessageType)buffer[0]);
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], (MessageLanguages.Languages)buffer[1], Encoding.UTF8.GetString(buffer.ToArray(), LengthAndDataType, buffer.Length - LengthAndDataType), buffer[3] + buffer[4] + buffer[5]);
+ return new MessageHeader((MessageType)buffer[0], (MessageLanguages.Languages)buffer[1], Encoding.UTF8.GetString(buffer.ToArray(), LengthAndDataType, buffer.Length - LengthAndDataType));
break;
+ case MessageHeader.MessageType.Session:
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;
+ break;
}
}
}
diff --git a/ServerTCP/Models/Apps.cs b/ServerTCP/Models/Apps.cs
new file mode 100644
index 0000000..d5d1cd8
--- /dev/null
+++ b/ServerTCP/Models/Apps.cs
@@ -0,0 +1,8 @@
+namespace ServerTCP.Models
+{
+ internal class Apps
+ {
+ public string parametername { get; set; }
+ public string parametervalue { get; set; }
+ }
+}
diff --git a/ServerTCP/Models/Data/ApplicationContext.cs b/ServerTCP/Models/Data/ApplicationContext.cs
index 05c020e..666005f 100644
--- a/ServerTCP/Models/Data/ApplicationContext.cs
+++ b/ServerTCP/Models/Data/ApplicationContext.cs
@@ -1,18 +1,29 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Options;
using System.Collections.Generic;
+using System.Data;
namespace ServerTCP.Models.Data
{
internal class ApplicationContext : DbContext
{
public DbSet users { get; set; }
+ public DbSet apps { get; set; }
public ApplicationContext()
{
//Database.EnsureCreated(); // гарантирует, что БД существует или создаст её и таблицы там
}
+ protected override void OnModelCreating(ModelBuilder modelBuilder)
+ {
+ modelBuilder
+ .Entity(builder =>
+ {
+ builder.HasNoKey();
+ });
+ }
+
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) // подключение к бд
{
optionsBuilder.UseNpgsql("Host=81.31.246.203;Port=5432;Database=DarkMilkBD;Username=gen_user;Password=lY8\\b@slc^g\\xJ");
diff --git a/ServerTCP/Models/User.cs b/ServerTCP/Models/User.cs
index f40fff1..327cca7 100644
--- a/ServerTCP/Models/User.cs
+++ b/ServerTCP/Models/User.cs
@@ -7,10 +7,5 @@ internal class User
public string login { get; set; }
public string email { get; set; }
public string password { get; set; }
-
- public User()
- {
-
- }
}
}
diff --git a/ServerTCP/Program.cs b/ServerTCP/Program.cs
index c9744a4..0eceb30 100644
--- a/ServerTCP/Program.cs
+++ b/ServerTCP/Program.cs
@@ -39,11 +39,6 @@ static void Main(string[] args)
do
{
size = listener.Receive(buffer); // получение данных, количество, значение
- //byte[] cleanBuffer;
- //var lenghtBuffer = buffer[3] + buffer[4] + buffer[5];
- //if (buffer[2] == 1)
- // lenghtBuffer += 10;
- //cleanBuffer = buffer.Take(lenghtBuffer).ToArray();
var header = MessageHeader.FromArray(buffer.Take(size).ToArray());
MessageHeader headerRequest = null;
@@ -53,14 +48,12 @@ static void Main(string[] args)
switch (header.Type)
{
case MessageHeader.MessageType.Check:
- headerRequest = new MessageHeader("1", MessageHeader.MessageType.Check, 1);
- break;
- case MessageHeader.MessageType.Session:
+ headerRequest = new MessageHeader("1", MessageHeader.MessageType.Check);
break;
case MessageHeader.MessageType.Token:
message = "1234567890";
loadToken = true;
- headerRequest = new MessageHeader(message, MessageHeader.MessageType.Token, message.Length);
+ headerRequest = new MessageHeader(message, MessageHeader.MessageType.Token);
break;
case MessageHeader.MessageType.Registration:
var user = new User
@@ -69,23 +62,21 @@ static void Main(string[] args)
};
DataBaseCommands.Insert(user, MessageHeader.MessageType.Registration);
break;
- case MessageHeader.MessageType.Log:
- break;
- case MessageHeader.MessageType.File:
- break;
- case MessageHeader.MessageType.Photo:
- break;
- case MessageHeader.MessageType.Data:
- break;
- case MessageHeader.MessageType.Title:
- break;
case MessageHeader.MessageType.TitleLoading:
- headerRequest = new MessageHeader("1", MessageHeader.MessageType.TitleLoading, 1);
+ var tx = "Привет, славяне!";
+ headerRequest = new MessageHeader(tx, MessageHeader.MessageType.TitleLoading);
+ break;
+ case MessageHeader.MessageType.Version:
+ var version = DataBaseCommands.Select(MessageHeader.MessageType.Version);
+ headerRequest = new MessageHeader(version.ToString(), MessageHeader.MessageType.Version);
break;
}
- headerRequestBytes = headerRequest.MessageServerToArray(loadToken);
- listener.Send(headerRequestBytes);
+ if (headerRequest is not null)
+ {
+ headerRequestBytes = headerRequest.MessageServerToArray(loadToken);
+ listener.Send(headerRequestBytes);
+ }
}
while (listener.Available > 0); // до тех пор, пока в нашем подключение есть данные, будет продолжаться считывание
diff --git a/ServerTCP/S3/ObjectS3.cs b/ServerTCP/S3/ObjectS3.cs
new file mode 100644
index 0000000..eff0d2f
--- /dev/null
+++ b/ServerTCP/S3/ObjectS3.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Amazon;
+using Amazon.S3;
+using Amazon.S3.Model;
+
+namespace ServerTCP.S3
+{
+ internal class ObjectS3
+ {
+ private string _accessKey = "DOQ61L40I9903B2VJDNO";
+ private string _secretKey = "jeNggPSKpz1DlONP8ni31ASWEiaTomBhl5mR0FfC";
+
+ public ObjectS3()
+ {
+ AmazonS3Config configsS3 = new AmazonS3Config
+ {
+ ServiceURL = @"https://s3.timeweb.cloud"
+ };
+
+ AmazonS3Client client = new AmazonS3Client(
+ _accessKey,
+ _secretKey,
+ configsS3
+ );
+
+
+ }
+
+ }
+}
diff --git a/ServerTCP/ServerTCP - Backup.csproj b/ServerTCP/ServerTCP - Backup.csproj
new file mode 100644
index 0000000..9a363a8
--- /dev/null
+++ b/ServerTCP/ServerTCP - Backup.csproj
@@ -0,0 +1,36 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+ True
+ True
+ Resources.resx
+
+
+
+
+
+ Resources.resx
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+
+
+
+
+
+
diff --git a/ServerTCP/ServerTCP.csproj b/ServerTCP/ServerTCP.csproj
index c27229c..58807ab 100644
--- a/ServerTCP/ServerTCP.csproj
+++ b/ServerTCP/ServerTCP.csproj
@@ -8,6 +8,8 @@
+
+