diff --git a/.vs/ASCKU Projects/DesignTimeBuild/.dtbcache.v2 b/.vs/ASCKU Projects/DesignTimeBuild/.dtbcache.v2 index 009e236..be8e563 100644 Binary files a/.vs/ASCKU Projects/DesignTimeBuild/.dtbcache.v2 and b/.vs/ASCKU Projects/DesignTimeBuild/.dtbcache.v2 differ diff --git a/.vs/ASCKU Projects/v16/.suo b/.vs/ASCKU Projects/v16/.suo index 604faf5..62e8628 100644 Binary files a/.vs/ASCKU Projects/v16/.suo and b/.vs/ASCKU Projects/v16/.suo differ diff --git a/DataClient/DataClient.csproj b/DataClient/DataClient.csproj index 015554f..2d125e6 100644 --- a/DataClient/DataClient.csproj +++ b/DataClient/DataClient.csproj @@ -8,7 +8,7 @@ - + D:\GIT\ASCKU_PC\DataClient\DataClient.xml diff --git a/DataClient/DataClient.xml b/DataClient/DataClient.xml new file mode 100644 index 0000000..7bbaf56 --- /dev/null +++ b/DataClient/DataClient.xml @@ -0,0 +1,221 @@ + + + + DataClient + + + + + Статус процесса выполнения запроса. + Предполагается использовать только на больших + загрузках и в ассинхронных задачах + + + + Коды для работы с СТП. + + + IP адрес СТП. + + + Порт СТП. + + + Количество попыток переподключения. + + + Время в секундах между попытками переподключения. + + + Основной конструктор класса NetClient. Ip-адрес - 127.0.0.1; Порт - 1070; + + + Конструктор класса NetClient с параметрами.Ip-адрес сервера.Порт сервера. + + + Получение неопределенного количество байт с сервера. Количество ограничено максимальным значением типа UInt.Открытый сетевой поток.Время ожидания между проверками буфера.Количество проверок буфера.Массив байт. + Соединение с сервером закрыто. + + Стрим недоступен для Чтения. + + Сервер сбросил соединение. + + + + Получение определенного количество байт с сервера.Открытый сетевой поток.Кол-во получаемых байт.Время ожидания между проверками буфера.Количество проверок буфера.Массив байт. Может быть меньше заданного количества. + Размер байт не должен равняться нулю. + + Стрим недоступен для записи. + + Сервер сбросил соединение. + + + + Отправка массива байт на СТП.Открытый сетевой поток.Массив байт.Результат отправки. + Размер байт не должен равняться нулю. + + Стрим недоступен для записи. + + + + Формирование массива байт на отправку.Код комманды. Конвертируется в 4 байта. (0x00 0x00 0x00 0x00)Передаваемая строка.Байты перед передаваемой строкой.Байты после передаваемой строкой.Массив байт для отправки на СТП. + + + Открытие соединения к серверу.Информирует только о подключении к серверу. Исключения опускает.Состояние подключения. + + + Проверка подключения.Состояние подключения. + + + Закрыть подключение. + + + Отправка массива байт на СТП.Массив байт для отправки.Результат отправки. + Размер байт не должен равняться нулю. + + Поток недоступен для записи. + + + + Получение неизвестного количество байт.Возвращает null, если что-то пошло не так.Массив байт. + + + Получение определенного количество байт.Количество байт.Возвращает null, если что-то пошло не так.Массив байт определенного размера. Может массив быть меньше, если в буфере не будет достаточно данных. + + + Внутренняя функция для создания подключения.Возвращает флаг необходимости закрытия соединения. + Не получилось соединиться с сервером. + + + + Внетренняя функция для закрытия соединения.Флаг о необходимости закрыть соединение. + + + Внутренняя функция получения файлов.Код, который будет отправлен на сервер.Дата. Из неё формируется строка в формате YYYMMDD.Номер печи. 00 - общецеховые параметры.Индекс файла. От 0 до 15.Массив байт, соответствующий запрашиваемому файлу. + Неверный код, для получения файла. + Неверный флаг во время получения файла. + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + Не получилось соединиться с сервером. + + + + Получение файла данных (байтами) с СТП.Дата. Из неё формируется строка в формате YYYMMDD.Номер печи. 00 - общецеховые параметры.Индекс файла. От 0 до 15.Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации.Обработанный массив байт. + Неверный код, для получения файла. + Неверный флаг во время получения файла. + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + Не получилось соединиться с сервером. + + + + Получение файла данных (байтами) с СТП.Дата. Из неё формируется строка в формате YYYMMDD.Номер печи. 00 - общецеховые параметры.Индекс файла. От 0 до 15.Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации.Обработанный массив байт. + Неверный код, для получения файла. + Неверный флаг во время получения файла. + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + Не получилось соединиться с сервером. + + + + Получение файла данных (байтами) с СТП.Название команды.Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации.Массив байт, соответствующий этой команде. Может вернуть null. + Неверный флаг во время получения файла. + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + Не получилось соединиться с сервером. + + + + Получение структуры файлов и папок в запрашиваемой директории.Путь, структуру которого надо отобразить.Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации.Массив строк. Полные пути к файлам и папкам. Может вернуть null. + Неверный флаг окончания строки. + Неверный флаг во время получения файла. + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + Не получилось соединиться с сервером. + + + + + Класс для связи с СТП. Содержит все инструменты, для получения данных. + + + + Номер сервера, используемого по умолчанию. + + + Массив серверов, инициализированных в экземпляре класса. + + + Получение номера сервера по его названию. + Название сервера. + Номер сервера в списке серверов. + + + Получение название сервера по его номеру. + Номер сервера в списке серверов. + Название сервера. + + + Проверка параметров серевера перед их добавлением в список. + IP адресс сервера. + Порт сервера. + Путь к архиву. + Результат выполнения функции. + + + Добавление сервера в список серверов. + Название сервера + IP адресс сервера. + Порт сервера. + Путь к архиву. + Результат выполнения функции. + + + Изменение сервера в списке серверов по его номеру. + Номер сервера в списке серверов. + Название сервера. + IP адресс сервера. + Порт сервера. + Путь к архиву. + Результат выполнения функции. + + + Изменение сервера в списке серверов по его названию. + Название сервера. + IP адресс сервера. + Порт сервера. + Путь к архиву. + Результат выполнения функции. + + + Удаление сервера из списка серверов по его номеру. + Номер сервера в списке серверов. + Результат выполнения функции. + + + Удаление сервера из списка серверов по его названию. + Название сервера. + Результат выполнения функции. + + + Чтение конфигурационнного файла и установка параметров по умолчанию. + + + Создание экземпляра класса. + + + Создание экземпляра класса с указанием конфигурационного файла. + Путь к файлу конфигурации. + + + diff --git a/DataClient/DataClientSrc.xml b/DataClient/DataClientSrc.xml new file mode 100644 index 0000000..7586bb3 --- /dev/null +++ b/DataClient/DataClientSrc.xml @@ -0,0 +1,240 @@ + + + + + Закрыть подключение. + + + Коды для работы с СТП. + + + Открытие соединения к серверу. + Информирует только о подключении к серверу. Исключения опускает. + Состояние подключения. + + + Проверка подключения. + Состояние подключения. + + + Формирование массива байт на отправку. + Код комманды. Конвертируется в 4 байта. (0x00 0x00 0x00 0x00) + Передаваемая строка. + Байты перед передаваемой строкой. + Байты после передаваемой строкой. + Массив байт для отправки на СТП. + + + Получение файла данных (байтами) с СТП. + Дата. Из неё формируется строка в формате YYYMMDD. + Номер печи. 00 - общецеховые параметры. + Индекс файла. От 0 до 15. + Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации. + Обработанный массив байт. + + Неверный код, для получения файла. + Неверный флаг во время получения файла. + + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + + Не получилось соединиться с сервером. + + + + Получение файла данных (байтами) с СТП. + Дата. Из неё формируется строка в формате YYYMMDD. + Номер печи. 00 - общецеховые параметры. + Индекс файла. От 0 до 15. + Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации. + Обработанный массив байт. + + Неверный код, для получения файла. + Неверный флаг во время получения файла. + + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + + Не получилось соединиться с сервером. + + + + Внутренняя функция получения файлов. + Код, который будет отправлен на сервер. + Дата. Из неё формируется строка в формате YYYMMDD. + Номер печи. 00 - общецеховые параметры. + Индекс файла. От 0 до 15. + Массив байт, соответствующий запрашиваемому файлу. + + Неверный код, для получения файла. + Неверный флаг во время получения файла. + + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + + Не получилось соединиться с сервером. + + + + + IP адрес СТП. + + + Внетренняя функция для закрытия соединения. + Флаг о необходимости закрыть соединение. + + + Внутренняя функция для создания подключения. + Возвращает флаг необходимости закрытия соединения. + + Не получилось соединиться с сервером. + + + + Основной конструктор класса NetClient. Ip-адрес - 127.0.0.1; Порт - 1070; + + + Конструктор класса NetClient с параметрами. + Ip-адрес сервера. + Порт сервера. + + + Порт СТП. + + + Получение неизвестного количество байт. + Возвращает null, если что-то пошло не так. + Массив байт. + + + Получение определенного количество байт. + Количество байт. + Возвращает null, если что-то пошло не так. + Массив байт определенного размера. Может массив быть меньше, если в буфере не будет достаточно данных. + + + Получение определенного количество байт с сервера. + Открытый сетевой поток. + Кол-во получаемых байт. + Время ожидания между проверками буфера. + Количество проверок буфера. + Массив байт. Может быть меньше заданного количества. + + Размер байт не должен равняться нулю. + + + Стрим недоступен для записи. + + + Сервер сбросил соединение. + + + + Получение неопределенного количество байт с сервера. Количество ограничено максимальным значением типа UInt. + Открытый сетевой поток. + Время ожидания между проверками буфера. + Количество проверок буфера. + Массив байт. + + Соединение с сервером закрыто. + + + Стрим недоступен для Чтения. + + + Сервер сбросил соединение. + + + + Количество попыток переподключения. + + + Время в секундах между попытками переподключения. + + + Отправка массива байт на СТП. + Открытый сетевой поток. + Массив байт. + Результат отправки. + + Размер байт не должен равняться нулю. + + + Стрим недоступен для записи. + + + + Отправка массива байт на СТП. + Массив байт для отправки. + Результат отправки. + + Размер байт не должен равняться нулю. + + + Поток недоступен для записи. + + + + + Статус процесса выполнения запроса. + Предполагается использовать только на больших + загрузках и в ассинхронных задачах + + + + Получение файла данных (байтами) с СТП. + Название команды. + Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации. + Массив байт, соответствующий этой команде. Может вернуть null. + + Неверный флаг во время получения файла. + + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + + Не получилось соединиться с сервером. + + + + + Получение структуры файлов и папок в запрашиваемой директории. + Путь, структуру которого надо отобразить. + Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации. + Массив строк. Полные пути к файлам и папкам. Может вернуть null. + + Неверный флаг окончания строки. + Неверный флаг во время получения файла. + + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + + Не получилось соединиться с сервером. + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DataClient/NETClient.cs b/DataClient/NETClient.cs index c29e3d0..744c13d 100644 --- a/DataClient/NETClient.cs +++ b/DataClient/NETClient.cs @@ -7,6 +7,7 @@ using System.Text; using System.Threading.Tasks; using NLog; using DataClient.Struct; +using System.IO; namespace DataClient { @@ -15,8 +16,7 @@ namespace DataClient private Logger log = LogManager.GetCurrentClassLogger(); private Encoding enc; private TcpClient tcpC = null; - /// Статус процесса выполнения запроса. - /// Предполагается использовать только на больших загрузках и в ассинхронных задачах. + /// public double Status { get @@ -31,7 +31,6 @@ namespace DataClient } } private NetStatus stat = new NetStatus(); - /// Коды для работы с СТП. /* 0x00 0x00 0x00 0x00 - 0000 - version 0x01 0x00 0x00 0x00 - 0001 - file list @@ -40,7 +39,7 @@ namespace DataClient 0x05 0x00 0x00 0x00 - 0005 - pasp find 0x06 0x00 0x00 0x00 - 0006 - prog list 0x07 0x00 0x00 0x00 - 0007 - prog download -0x08 0x00 0x00 0x00 - 0008 - server time + 0x09 0x00 0x00 0x00 - 0009 - download usov 0x0A 0x00 0x00 0x00 - 0010 - slit history 0x0B 0x00 0x00 0x00 - 0011 - keep alive @@ -54,7 +53,6 @@ namespace DataClient - pasp browse2 - arch history - download usov nhv -0x17 0x00 0x00 0x00 - 0023 - dir browse - vdp sim med - vdp flags 0x1A 0x00 0x00 0x00 - 0026 - user flags @@ -109,14 +107,15 @@ namespace DataClient - by name - test */ + /// public enum Code : uint { download = 2, + server_time = 8, download_nh = 21, - + dir_browse = 23, by_name = uint.MaxValue, - TCP_COM_VERSION = 0, TCP_COM_FILE_LIST = 1, TCP_COM_PASP_BROWSE = 3, @@ -124,7 +123,7 @@ namespace DataClient TCP_COM_PASP_FIND = 5, TCP_COM_PROG_LIST = 6, TCP_COM_PROG_DOWNLOAD = 7, - TCP_COM_SERVER_TIME = 8, + TCP_COM_DOWNLOAD_USOV = 9, TCP_COM_SLIT_HISTORY = 10, TCP_COM_KEEP_ALIVE = 11, @@ -138,7 +137,6 @@ namespace DataClient TCP_COM_PASP_BROWSE2 = 19, TCP_COM_ARCH_HISTORY = 20, TCP_COM_DOWNLOAD_USOV_NH = 22, - TCP_COM_DIR_BROWSE = 23, TCP_COM_VDP_SIM_MED = 24, TCP_COM_VDP_FLAGS = 25, TCP_COM_USER_FLAGS = 26, @@ -191,28 +189,28 @@ namespace DataClient TCP_COM_GET_CUR_PARAMS_5 = 73, TCP_COM_FIX_DB_CYCLE = 74, } - /// IP адрес СТП. + /// public string Ip { get { return ip; } set { ip = (IPAddress.TryParse(value, out _)) ? value : ip; } } private string ip = "127.0.0.1"; - /// Порт СТП. + /// public int Port { get { return port; } set { port = (value < 1) ? 1 : (value > 65535) ? 65535 : value; } } private int port = 1070; - /// Количество попыток переподключения. + /// public int RetryCount { get { return retryCount; } set { retryCount = value < 1 ? 1 : value; } } private int retryCount = 3; - /// Время в секундах между попытками переподключения. + /// public int RetryInterval { get { return retryInterval; } @@ -220,14 +218,15 @@ namespace DataClient } private int retryInterval = 1; - //Construction + /// public NETClient() { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); enc = Encoding.GetEncoding(866); tcpC = new TcpClient(new IPEndPoint(IPAddress.Parse(ip), port)); } + /// public NETClient(string ip, int port) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); @@ -238,89 +237,52 @@ namespace DataClient } //Work with socket functions - /// Получить неизвестное количество байт. - /// Открытый сетевой поток. - /// Время ожидания между проверккми буфера. - /// Количество проверок буфера. - /// Массив байт. - private byte[] ReceiveBytesUnknown(NetworkStream ns, int awaitInterval = 1, int tryCounts = 3) + /// + private byte[] ReceiveBytesFull(NetworkStream ns, int awaitInterval = 1, int tryCounts = 3) { - tryCounts = (tryCounts < 1) ? 1 : tryCounts; - awaitInterval = (awaitInterval < 1) ? 1 : awaitInterval; - var res = new List(); - if (!ns.CanRead) throw new InvalidOperationException("NetworkStream not access to Read."); - if (!ns.Socket.Connected) throw new InvalidOperationException("NetworkStream not connected to server."); - - int tryCount = 0; - do - { - if (!ns.Socket.Connected) throw new InvalidOperationException("Server drop connection."); - if (!ns.DataAvailable) - { - tryCount++; - Task.Delay(awaitInterval * 1000).Wait(); - continue; - } - tryCount = 0; - var buf = new byte[1024]; - var length = ns.Read(buf, 0, buf.Length); - for (var i = 0; i < length; i++) res.Add(buf[i]); - } while (tryCount < tryCounts); - return res.ToArray(); + try{ return ReceiveBytesFixSize(ns, uint.MaxValue, awaitInterval, tryCounts); } + catch { throw; } } - /// Получить определенное количество байт. - /// Открытый сетевой поток. - /// Кол-во получаемый байт. - /// Массив байт, равный заданному кол-ву. + /// private byte[] ReceiveBytesFixSize(NetworkStream ns, uint size, int awaitInterval = 1, int tryCounts = 3) { tryCounts = (tryCounts < 1) ? 1 : tryCounts; awaitInterval = (awaitInterval < 1) ? 1 : awaitInterval; if (size == 0) throw new ArgumentException("Size can't be zero."); - if (!ns.CanRead) throw new InvalidOperationException("NetworkStream not access to Read."); if (!ns.Socket.Connected) throw new InvalidOperationException("NetworkStream not connected to server."); - var res = new byte[size]; - var countSize = 0; - + if (!ns.CanRead) throw new IOException("NetworkStream not access to Read."); + var res = new List(); int tryCount = 0; do { - if (!ns.Socket.Connected) throw new InvalidOperationException("Server drop connection."); + if (!ns.Socket.Connected) throw new TimeoutException("Server drop connection."); if (!ns.DataAvailable) { - tryCount++; Task.Delay(awaitInterval * 1000).Wait(); + tryCount++; continue; } tryCount = 0; - var buf = new byte[size - countSize]; + var sz = ((size - res.Count) > 1024) ? 1024 : (size - res.Count); + var buf = new byte[sz]; var length = ns.Read(buf, 0, buf.Length); - for (var i = 0; i < length; i++) res[countSize++] = buf[i]; - if (countSize == size) - return res; + for (var i = 0; i < length; i++) res.Add(buf[i]); + if (res.Count == size) return res.ToArray(); } while (tryCount < tryCounts); - return res; + return res.ToArray(); } - /// Отправить массив байт на СТП. - /// Открытый сетевой поток. - /// Массив байт. - /// Результат отправки. + /// private bool SendBytes(NetworkStream ns, byte[] arr) { - if (!ns.CanWrite) throw new InvalidOperationException("NetworkStream not access to Write."); if (!ns.Socket.Connected) throw new InvalidOperationException("NetworkStream not connected to server."); + if (!ns.CanWrite) throw new IOException("NetworkStream not access to Write."); try { ns.Write(arr, 0, arr.Length); } catch { return false; } return true; } //Support functions - /// Формирование массива байт на отправку. - /// Код комманды. Конвертируется в 4 байта. (0x00 0x00 0x00 0x00) - /// Байты перед передаваемой строкой. - /// Передаваемая строка. - /// Байты после передаваемой строкой. - /// Массив байт для отправки на СТП. + /// public byte[] CreateCode(uint code, string val = null, byte[] prefix = null, byte[] postfix = null) { var res = new List(); @@ -339,8 +301,7 @@ namespace DataClient } //Main functions - /// Открыть подключение. - /// Результат выполнения функции. + /// public bool Connect() { if (Connected()) return true; @@ -349,80 +310,61 @@ namespace DataClient catch { return false; } return Connected(); } - /// Проверка подключения. - /// Возвращает состояние подключения. - public bool Connected() + /// + public bool Connected() { return (tcpC != null && tcpC.Connected); } + /// + public void Close() { if (tcpC != null && !tcpC.Connected) tcpC.Close(); } + /// + public bool SendBytes(byte[] send) { - return (tcpC != null && tcpC.Connected); + if (!Connected()) return false; + try { return SendBytes(tcpC.GetStream(), send); } + catch { throw; } } - /// Закрыть подключение. - public void Close() - { - if (tcpC != null && !tcpC.Connected) - tcpC.Close(); - } - /// Отправка массива байт на СТП. - /// Массив байт для отправки. - public void SendBytes(byte[] send) - { - if (!Connected()) throw new InvalidOperationException("Connection not exist."); - var ns = tcpC.GetStream(); - SendBytes(ns, send); - } - /// Получить неизвестное количество байт. - /// Массив байт. + /// public byte[] ReceiveBytes() { - var res = new List(); - if (!Connected()) throw new InvalidOperationException("Connection not exist."); - var ns = tcpC.GetStream(); - res.AddRange(ReceiveBytesUnknown(ns)); - return res.ToArray(); + if (!Connected()) return null; + try { return ReceiveBytesFull(tcpC.GetStream()); } + catch { return null; } } - /// Получить определенное количество байт. - /// Количество байт. - /// Массив байт. + /// public byte[] ReceiveBytes(uint size) { - var res = new List(); - if (!Connected()) throw new Exception("Connection not exist."); - var ns = tcpC.GetStream(); - res.AddRange(ReceiveBytesFixSize(ns, size)); - return res.ToArray(); + if (!Connected()) return null; + try { return ReceiveBytesFixSize(tcpC.GetStream(), size); } + catch { return null; } } //SubMain functions - /// Внутренняя функция получения файлов. - /// Код, который будет отправлен на сервер. - /// Дата. Из неё формируется строка в формате YYYMMDD - /// Номер печи. 00 - общецеховые параметры. - /// Индекс файла. От 0 до 15. - /// + /// + private bool My_Connect() + { + if (stat.stat == NetStatus.Status.in_progress) throw new IOException("Previous method not finished."); + stat.stat = NetStatus.Status.in_progress; + if (Connected()) return false; + if (!Connect()) { throw new InvalidOperationException("Can't create connection."); } + return true; + } + /// + private void My_Close(bool needClose) + { + if (needClose) Close(); + stat.stat = NetStatus.Status.complete; + } + /// private byte[] GetFile(Code code, DateTime date, int vdp, int idx) { - if (code != Code.download_nh && code != Code.download) - throw new ArgumentException("Wrong code for this method."); - if (stat.stat == NetStatus.Status.in_progress) - throw new InvalidOperationException("Previous method not finished."); - stat.stat = NetStatus.Status.in_progress; - bool flag_connection = !Connected(); - if (flag_connection) Connect(); - if (!Connected()) - { - stat.stat = NetStatus.Status.complete; - throw new InvalidOperationException("Can't create connection."); - } + if (code != Code.download_nh && code != Code.download) throw new ArgumentException("Wrong code for this method."); + bool needCloseConeection = false; + try { needCloseConeection = My_Connect(); } + catch { My_Close(needCloseConeection); throw; } var str = date.ToString("yyyyMMdd") + "." + vdp.ToString("D2") + (idx % 16).ToString("X1"); - try { SendBytes(CreateCode((uint)code, str)); } - catch (Exception e) - { - stat.stat = NetStatus.Status.complete; - if (flag_connection) Close(); - throw new InvalidOperationException("Can't send code.", e); - } + try { if(SendBytes(CreateCode((uint)code, str))) throw new IOException("Can't send bytes to server."); } + catch { My_Close(needCloseConeection); throw; } var res = new List(); - var flag_end = false; + var endCycle = false; try { do @@ -431,86 +373,138 @@ namespace DataClient switch (tmp[0]) { case 0x00: - stat.stat = NetStatus.Status.complete; - flag_end = true; + case 0xff: + endCycle = true; break; case 0x01: - var blockSize = BitConverter.ToUInt32(ReceiveBytes(4)); - res.AddRange(ReceiveBytes(blockSize)); + res.AddRange(ReceiveBytes(BitConverter.ToUInt32(ReceiveBytes(4)))); stat.size = (uint)res.Count; break; case 0x02: - var fullSize = BitConverter.ToUInt32(ReceiveBytes(4)); - stat.fullSize = fullSize; - break; - case 0xff: - stat.stat = NetStatus.Status.complete; - flag_end = true; + stat.fullSize = BitConverter.ToUInt32(ReceiveBytes(4)); break; + default: + ReceiveBytes(); + throw new ArgumentException("Wront flag when get files."); } - } while (!flag_end); - } - catch (Exception e) - { - throw new InvalidOperationException("Can't download file.", e); - } - finally - { - stat.stat = NetStatus.Status.complete; - if (flag_connection) Close(); + } while (!endCycle); } + catch { My_Close(needCloseConeection); throw; } + finally { My_Close(needCloseConeection); } return res.ToArray(); } //COMMANDS FUNCTIONS - /// Получение файла данных (байтами) с СТП. - /// Дата. Из неё формируется строка в формате YYYMMDD - /// Номер печи. 00 - общецеховые параметры. - /// Индекс файла. От 0 до 15. - /// Обработанный массив байт. + /// public byte[] Full_Download_NH(DateTime date, int vdp, int idx) { try { return GetFile(Code.download_nh, date, vdp, idx); } catch { throw; } } - /// Получение файла данных (байтами) с СТП. - /// Дата. Из неё формируется строка в формате YYYMMDD - /// Номер печи. 00 - общецеховые параметры. - /// Индекс файла. От 0 до 15. - /// Обработанный массив байт. + /// public byte[] Full_Download(DateTime date, int vdp, int idx) { try { return GetFile(Code.download, date, vdp, idx); } catch { throw; } } + /// public byte[] Full_By_Name(string val) { if (string.IsNullOrEmpty(val)) return null; - bool flag_connection = !Connected(); - if (flag_connection) Connect(); - if (!Connected()) { throw new InvalidOperationException("Can't create connection."); } - try { SendBytes(CreateCode((uint)Code.by_name, val)); } - catch (Exception e) - { - if (flag_connection) Close(); - throw new InvalidOperationException("Can't send code.", e); - } + bool needCloseConeection = false; + try { needCloseConeection = My_Connect(); } + catch { My_Close(needCloseConeection); throw; } + + try { if(!SendBytes(CreateCode((uint)Code.by_name, val))) throw new IOException("Can't send bytes to server."); } + catch { My_Close(needCloseConeection); throw; } + + byte[] res = null; try { var tmp = ReceiveBytes(1); - return tmp[0] switch + switch (tmp[0]) { - 0x00 => null, - 0x01 => ReceiveBytes(4), - _ => throw new InvalidOperationException("Wrong answer from server."), + case 0x00: break; + case 0x01: res = ReceiveBytes(4); break; + default: ReceiveBytes(); break; }; } - catch (Exception e) { throw new InvalidOperationException("Can't receive code.", e); } - finally { if (flag_connection) Close(); } + catch { My_Close(needCloseConeection); throw; } + finally { My_Close(needCloseConeection); } + return res; } - public string[] Full_Dir_Browse(string dir) + /// + public string[] Full_Dir_Browse(string dir = "") { + dir = (string.IsNullOrEmpty(dir)) ? "" : dir; + bool needCloseConeection = false; + try { needCloseConeection = My_Connect(); } + catch { My_Close(needCloseConeection); throw; } + + try { if (!SendBytes(CreateCode((uint)Code.dir_browse, dir, new byte[] { 0x00 }))) throw new IOException("Can't send bytes to server."); } + catch { My_Close(needCloseConeection); throw; } + + var res = new List(); + try + { + bool endCycle = false; + do + { + var tmp = ReceiveBytes(1); + switch (tmp[0]) + { + case 0x00: + res = null; + endCycle = true; + break; + case 0x01: + var str = enc.GetString(ReceiveBytes(BitConverter.ToUInt32(ReceiveBytes(4)))); + if (str != "." && str != ".." && str != "error") + if (dir == "") res.Add(str); + else res.Add(dir + "/" + str); + tmp = ReceiveBytes(1); + if (tmp[0] != 0x00) throw new ArgumentException("Wrong get end line."); + break; + case 0xff: + endCycle = true; + break; + default: + res = null; + ReceiveBytes(); + endCycle = true; + break; + } + } while (!endCycle); + } + catch { My_Close(needCloseConeection); throw; } + finally { My_Close(needCloseConeection); } + return res?.ToArray(); } + + public DateTime Full_Server_Time() + { + bool needCloseConeection = false; + try { needCloseConeection = My_Connect(); } + catch { My_Close(needCloseConeection); throw; } + + try { if (!SendBytes(CreateCode((uint)Code.server_time))) throw new IOException("Can't send bytes to server."); } + catch { My_Close(needCloseConeection); throw; } + int year, month, day, hour, minute, second; + try + { + var buf = ReceiveBytes(2); + year = buf[0] | buf[1] << 8; + month = ReceiveBytes(1)[0]; + day = ReceiveBytes(1)[0]; + hour = ReceiveBytes(1)[0]; + minute = ReceiveBytes(1)[0]; + second = ReceiveBytes(1)[0]; + } + catch { My_Close(needCloseConeection); throw; } + finally { My_Close(needCloseConeection); } + return new DateTime(year, month, day, hour, minute, second); + } + } } diff --git a/DataClient/bin/Debug/net5.0/DataClient.dll b/DataClient/bin/Debug/net5.0/DataClient.dll index d82d1d2..2d146cb 100644 Binary files a/DataClient/bin/Debug/net5.0/DataClient.dll and b/DataClient/bin/Debug/net5.0/DataClient.dll differ diff --git a/DataClient/bin/Debug/net5.0/DataClient.pdb b/DataClient/bin/Debug/net5.0/DataClient.pdb index c7e8e3d..87e5fb8 100644 Binary files a/DataClient/bin/Debug/net5.0/DataClient.pdb and b/DataClient/bin/Debug/net5.0/DataClient.pdb differ diff --git a/DataClient/bin/Debug/net5.0/DataClient.xml b/DataClient/bin/Debug/net5.0/DataClient.xml new file mode 100644 index 0000000..7bbaf56 --- /dev/null +++ b/DataClient/bin/Debug/net5.0/DataClient.xml @@ -0,0 +1,221 @@ + + + + DataClient + + + + + Статус процесса выполнения запроса. + Предполагается использовать только на больших + загрузках и в ассинхронных задачах + + + + Коды для работы с СТП. + + + IP адрес СТП. + + + Порт СТП. + + + Количество попыток переподключения. + + + Время в секундах между попытками переподключения. + + + Основной конструктор класса NetClient. Ip-адрес - 127.0.0.1; Порт - 1070; + + + Конструктор класса NetClient с параметрами.Ip-адрес сервера.Порт сервера. + + + Получение неопределенного количество байт с сервера. Количество ограничено максимальным значением типа UInt.Открытый сетевой поток.Время ожидания между проверками буфера.Количество проверок буфера.Массив байт. + Соединение с сервером закрыто. + + Стрим недоступен для Чтения. + + Сервер сбросил соединение. + + + + Получение определенного количество байт с сервера.Открытый сетевой поток.Кол-во получаемых байт.Время ожидания между проверками буфера.Количество проверок буфера.Массив байт. Может быть меньше заданного количества. + Размер байт не должен равняться нулю. + + Стрим недоступен для записи. + + Сервер сбросил соединение. + + + + Отправка массива байт на СТП.Открытый сетевой поток.Массив байт.Результат отправки. + Размер байт не должен равняться нулю. + + Стрим недоступен для записи. + + + + Формирование массива байт на отправку.Код комманды. Конвертируется в 4 байта. (0x00 0x00 0x00 0x00)Передаваемая строка.Байты перед передаваемой строкой.Байты после передаваемой строкой.Массив байт для отправки на СТП. + + + Открытие соединения к серверу.Информирует только о подключении к серверу. Исключения опускает.Состояние подключения. + + + Проверка подключения.Состояние подключения. + + + Закрыть подключение. + + + Отправка массива байт на СТП.Массив байт для отправки.Результат отправки. + Размер байт не должен равняться нулю. + + Поток недоступен для записи. + + + + Получение неизвестного количество байт.Возвращает null, если что-то пошло не так.Массив байт. + + + Получение определенного количество байт.Количество байт.Возвращает null, если что-то пошло не так.Массив байт определенного размера. Может массив быть меньше, если в буфере не будет достаточно данных. + + + Внутренняя функция для создания подключения.Возвращает флаг необходимости закрытия соединения. + Не получилось соединиться с сервером. + + + + Внетренняя функция для закрытия соединения.Флаг о необходимости закрыть соединение. + + + Внутренняя функция получения файлов.Код, который будет отправлен на сервер.Дата. Из неё формируется строка в формате YYYMMDD.Номер печи. 00 - общецеховые параметры.Индекс файла. От 0 до 15.Массив байт, соответствующий запрашиваемому файлу. + Неверный код, для получения файла. + Неверный флаг во время получения файла. + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + Не получилось соединиться с сервером. + + + + Получение файла данных (байтами) с СТП.Дата. Из неё формируется строка в формате YYYMMDD.Номер печи. 00 - общецеховые параметры.Индекс файла. От 0 до 15.Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации.Обработанный массив байт. + Неверный код, для получения файла. + Неверный флаг во время получения файла. + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + Не получилось соединиться с сервером. + + + + Получение файла данных (байтами) с СТП.Дата. Из неё формируется строка в формате YYYMMDD.Номер печи. 00 - общецеховые параметры.Индекс файла. От 0 до 15.Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации.Обработанный массив байт. + Неверный код, для получения файла. + Неверный флаг во время получения файла. + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + Не получилось соединиться с сервером. + + + + Получение файла данных (байтами) с СТП.Название команды.Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации.Массив байт, соответствующий этой команде. Может вернуть null. + Неверный флаг во время получения файла. + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + Не получилось соединиться с сервером. + + + + Получение структуры файлов и папок в запрашиваемой директории.Путь, структуру которого надо отобразить.Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации.Массив строк. Полные пути к файлам и папкам. Может вернуть null. + Неверный флаг окончания строки. + Неверный флаг во время получения файла. + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + Не получилось соединиться с сервером. + + + + + Класс для связи с СТП. Содержит все инструменты, для получения данных. + + + + Номер сервера, используемого по умолчанию. + + + Массив серверов, инициализированных в экземпляре класса. + + + Получение номера сервера по его названию. + Название сервера. + Номер сервера в списке серверов. + + + Получение название сервера по его номеру. + Номер сервера в списке серверов. + Название сервера. + + + Проверка параметров серевера перед их добавлением в список. + IP адресс сервера. + Порт сервера. + Путь к архиву. + Результат выполнения функции. + + + Добавление сервера в список серверов. + Название сервера + IP адресс сервера. + Порт сервера. + Путь к архиву. + Результат выполнения функции. + + + Изменение сервера в списке серверов по его номеру. + Номер сервера в списке серверов. + Название сервера. + IP адресс сервера. + Порт сервера. + Путь к архиву. + Результат выполнения функции. + + + Изменение сервера в списке серверов по его названию. + Название сервера. + IP адресс сервера. + Порт сервера. + Путь к архиву. + Результат выполнения функции. + + + Удаление сервера из списка серверов по его номеру. + Номер сервера в списке серверов. + Результат выполнения функции. + + + Удаление сервера из списка серверов по его названию. + Название сервера. + Результат выполнения функции. + + + Чтение конфигурационнного файла и установка параметров по умолчанию. + + + Создание экземпляра класса. + + + Создание экземпляра класса с указанием конфигурационного файла. + Путь к файлу конфигурации. + + + diff --git a/DataClient/bin/Debug/net5.0/ref/DataClient.dll b/DataClient/bin/Debug/net5.0/ref/DataClient.dll index 7a25400..e48227e 100644 Binary files a/DataClient/bin/Debug/net5.0/ref/DataClient.dll and b/DataClient/bin/Debug/net5.0/ref/DataClient.dll differ diff --git a/DataClient/obj/Debug/net5.0/DataClient.csproj.FileListAbsolute.txt b/DataClient/obj/Debug/net5.0/DataClient.csproj.FileListAbsolute.txt index a8405e3..094c045 100644 --- a/DataClient/obj/Debug/net5.0/DataClient.csproj.FileListAbsolute.txt +++ b/DataClient/obj/Debug/net5.0/DataClient.csproj.FileListAbsolute.txt @@ -3,7 +3,6 @@ D:\GIT\ASCKU_PC\DataClient\bin\Debug\net5.0\DataClient.deps.json D:\GIT\ASCKU_PC\DataClient\bin\Debug\net5.0\DataClient.dll D:\GIT\ASCKU_PC\DataClient\bin\Debug\net5.0\ref\DataClient.dll D:\GIT\ASCKU_PC\DataClient\bin\Debug\net5.0\DataClient.pdb -D:\GIT\ASCKU_PC\DataClient\obj\Debug\net5.0\DataClient.csprojAssemblyReference.cache D:\GIT\ASCKU_PC\DataClient\obj\Debug\net5.0\DataClient.GeneratedMSBuildEditorConfig.editorconfig D:\GIT\ASCKU_PC\DataClient\obj\Debug\net5.0\DataClient.AssemblyInfoInputs.cache D:\GIT\ASCKU_PC\DataClient\obj\Debug\net5.0\DataClient.AssemblyInfo.cs @@ -11,3 +10,5 @@ D:\GIT\ASCKU_PC\DataClient\obj\Debug\net5.0\DataClient.csproj.CoreCompileInputs. D:\GIT\ASCKU_PC\DataClient\obj\Debug\net5.0\DataClient.dll D:\GIT\ASCKU_PC\DataClient\obj\Debug\net5.0\ref\DataClient.dll D:\GIT\ASCKU_PC\DataClient\obj\Debug\net5.0\DataClient.pdb +D:\GIT\ASCKU_PC\DataClient\bin\Debug\net5.0\DataClient.xml +D:\GIT\ASCKU_PC\DataClient\obj\Debug\net5.0\DataClient.csprojAssemblyReference.cache diff --git a/DataClient/obj/Debug/net5.0/DataClient.csprojAssemblyReference.cache b/DataClient/obj/Debug/net5.0/DataClient.csprojAssemblyReference.cache index f13f76b..9d8e86a 100644 Binary files a/DataClient/obj/Debug/net5.0/DataClient.csprojAssemblyReference.cache and b/DataClient/obj/Debug/net5.0/DataClient.csprojAssemblyReference.cache differ diff --git a/DataClient/obj/Debug/net5.0/DataClient.dll b/DataClient/obj/Debug/net5.0/DataClient.dll index d82d1d2..2d146cb 100644 Binary files a/DataClient/obj/Debug/net5.0/DataClient.dll and b/DataClient/obj/Debug/net5.0/DataClient.dll differ diff --git a/DataClient/obj/Debug/net5.0/DataClient.pdb b/DataClient/obj/Debug/net5.0/DataClient.pdb index c7e8e3d..87e5fb8 100644 Binary files a/DataClient/obj/Debug/net5.0/DataClient.pdb and b/DataClient/obj/Debug/net5.0/DataClient.pdb differ diff --git a/DataClient/obj/Debug/net5.0/ref/DataClient.dll b/DataClient/obj/Debug/net5.0/ref/DataClient.dll index 7a25400..e48227e 100644 Binary files a/DataClient/obj/Debug/net5.0/ref/DataClient.dll and b/DataClient/obj/Debug/net5.0/ref/DataClient.dll differ diff --git a/DataClients/DataClientSrc.xml b/DataClients/DataClientSrc.xml new file mode 100644 index 0000000..7dde50e --- /dev/null +++ b/DataClients/DataClientSrc.xml @@ -0,0 +1 @@ + diff --git a/DataClients/DataClients.csproj b/DataClients/DataClients.csproj index 187f5c3..14d3c4c 100644 --- a/DataClients/DataClients.csproj +++ b/DataClients/DataClients.csproj @@ -7,6 +7,8 @@ 0 + D:\GIT\ASCKU_PC\DataClients\DataClients.xml + TRACE diff --git a/DataClients/obj/Debug/netstandard2.0/DataClients.csproj.CoreCompileInputs.cache b/DataClients/obj/Debug/netstandard2.0/DataClients.csproj.CoreCompileInputs.cache index 2f65ae3..c3bbc9e 100644 --- a/DataClients/obj/Debug/netstandard2.0/DataClients.csproj.CoreCompileInputs.cache +++ b/DataClients/obj/Debug/netstandard2.0/DataClients.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -dcd43f965ba9bd3497fc087ead8b4421f1313830 +871cac96c3ed0d819a49dc12bad5bc0845a6eb38 diff --git a/DataClients/obj/Debug/netstandard2.0/DataClients.csprojAssemblyReference.cache b/DataClients/obj/Debug/netstandard2.0/DataClients.csprojAssemblyReference.cache index da845a5..02d63d6 100644 Binary files a/DataClients/obj/Debug/netstandard2.0/DataClients.csprojAssemblyReference.cache and b/DataClients/obj/Debug/netstandard2.0/DataClients.csprojAssemblyReference.cache differ diff --git a/STPClient/obj/STPClient.csproj.nuget.dgspec.json b/STPClient/obj/STPClient.csproj.nuget.dgspec.json deleted file mode 100644 index 739367c..0000000 --- a/STPClient/obj/STPClient.csproj.nuget.dgspec.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "format": 1, - "restore": { - "D:\\GIT\\ASCKU_PC\\STPClient\\STPClient.csproj": {} - }, - "projects": { - "D:\\GIT\\ASCKU_PC\\STPClient\\STPClient.csproj": { - "version": "0.0.3", - "restore": { - "projectUniqueName": "D:\\GIT\\ASCKU_PC\\STPClient\\STPClient.csproj", - "projectName": "DataClient", - "projectPath": "D:\\GIT\\ASCKU_PC\\STPClient\\STPClient.csproj", - "packagesPath": "C:\\Users\\google\\.nuget\\packages\\", - "outputPath": "D:\\GIT\\ASCKU_PC\\STPClient\\obj\\", - "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages", - "C:\\Program Files (x86)\\Microsoft\\Xamarin\\NuGet\\", - "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" - ], - "configFilePaths": [ - "C:\\Users\\google\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Xamarin.Offline.config" - ], - "originalTargetFrameworks": [ - "net5.0" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net5.0": { - "targetAlias": "net5.0", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - } - }, - "frameworks": { - "net5.0": { - "targetAlias": "net5.0", - "dependencies": { - "NLog": { - "target": "Package", - "version": "[4.7.10, )" - }, - "NLog.Extensions.Logging": { - "target": "Package", - "version": "[1.7.2, )" - }, - "Newtonsoft.Json": { - "target": "Package", - "version": "[13.0.1, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\5.0.201\\RuntimeIdentifierGraph.json" - } - } - } - } -} \ No newline at end of file diff --git a/STPClient/obj/STPClient.csproj.nuget.g.props b/STPClient/obj/STPClient.csproj.nuget.g.props deleted file mode 100644 index 471ec1a..0000000 --- a/STPClient/obj/STPClient.csproj.nuget.g.props +++ /dev/null @@ -1,21 +0,0 @@ - - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - $(UserProfile)\.nuget\packages\ - C:\Users\google\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages;C:\Program Files (x86)\Microsoft\Xamarin\NuGet\;C:\Program Files\dotnet\sdk\NuGetFallbackFolder - PackageReference - 5.9.0 - - - - - - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - \ No newline at end of file diff --git a/STPClient/obj/STPClient.csproj.nuget.g.targets b/STPClient/obj/STPClient.csproj.nuget.g.targets deleted file mode 100644 index 53cfaa1..0000000 --- a/STPClient/obj/STPClient.csproj.nuget.g.targets +++ /dev/null @@ -1,6 +0,0 @@ - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - \ No newline at end of file diff --git a/STPClient/obj/project.assets.json b/STPClient/obj/project.assets.json deleted file mode 100644 index 49cb284..0000000 --- a/STPClient/obj/project.assets.json +++ /dev/null @@ -1,444 +0,0 @@ -{ - "version": 3, - "targets": { - "net5.0": { - "Microsoft.Extensions.Configuration.Abstractions/5.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "5.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.DependencyInjection/5.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0" - }, - "compile": { - "lib/net5.0/Microsoft.Extensions.DependencyInjection.dll": {} - }, - "runtime": { - "lib/net5.0/Microsoft.Extensions.DependencyInjection.dll": {} - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Logging/5.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "5.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0", - "Microsoft.Extensions.Logging.Abstractions": "5.0.0", - "Microsoft.Extensions.Options": "5.0.0" - }, - "compile": { - "lib/netstandard2.1/Microsoft.Extensions.Logging.dll": {} - }, - "runtime": { - "lib/netstandard2.1/Microsoft.Extensions.Logging.dll": {} - } - }, - "Microsoft.Extensions.Logging.Abstractions/5.0.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Options/5.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0", - "Microsoft.Extensions.Primitives": "5.0.0" - }, - "compile": { - "lib/net5.0/Microsoft.Extensions.Options.dll": {} - }, - "runtime": { - "lib/net5.0/Microsoft.Extensions.Options.dll": {} - } - }, - "Microsoft.Extensions.Primitives/5.0.0": { - "type": "package", - "compile": { - "lib/netcoreapp3.0/Microsoft.Extensions.Primitives.dll": {} - }, - "runtime": { - "lib/netcoreapp3.0/Microsoft.Extensions.Primitives.dll": {} - } - }, - "Newtonsoft.Json/13.0.1": { - "type": "package", - "compile": { - "lib/netstandard2.0/Newtonsoft.Json.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Newtonsoft.Json.dll": {} - } - }, - "NLog/4.7.10": { - "type": "package", - "compile": { - "lib/netstandard2.0/NLog.dll": {} - }, - "runtime": { - "lib/netstandard2.0/NLog.dll": {} - } - }, - "NLog.Extensions.Logging/1.7.2": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "5.0.0", - "Microsoft.Extensions.Logging": "5.0.0", - "NLog": "4.7.9" - }, - "compile": { - "lib/net5.0/NLog.Extensions.Logging.dll": {} - }, - "runtime": { - "lib/net5.0/NLog.Extensions.Logging.dll": {} - } - } - } - }, - "libraries": { - "Microsoft.Extensions.Configuration.Abstractions/5.0.0": { - "sha512": "ETjSBHMp3OAZ4HxGQYpwyGsD8Sw5FegQXphi0rpoGMT74S4+I2mm7XJEswwn59XAaKOzC15oDSOWEE8SzDCd6Q==", - "type": "package", - "path": "microsoft.extensions.configuration.abstractions/5.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/net461/Microsoft.Extensions.Configuration.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "microsoft.extensions.configuration.abstractions.5.0.0.nupkg.sha512", - "microsoft.extensions.configuration.abstractions.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Microsoft.Extensions.DependencyInjection/5.0.0": { - "sha512": "Rc2kb/p3Ze6cP6rhFC3PJRdWGbLvSHZc0ev7YlyeU6FmHciDMLrhoVoTUEzKPhN5ZjFgKF1Cf5fOz8mCMIkvpA==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection/5.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/Microsoft.Extensions.DependencyInjection.dll", - "lib/net461/Microsoft.Extensions.DependencyInjection.xml", - "lib/net5.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net5.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", - "microsoft.extensions.dependencyinjection.5.0.0.nupkg.sha512", - "microsoft.extensions.dependencyinjection.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": { - "sha512": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection.abstractions/5.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net461/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "microsoft.extensions.dependencyinjection.abstractions.5.0.0.nupkg.sha512", - "microsoft.extensions.dependencyinjection.abstractions.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Microsoft.Extensions.Logging/5.0.0": { - "sha512": "MgOwK6tPzB6YNH21wssJcw/2MKwee8b2gI7SllYfn6rvTpIrVvVS5HAjSU2vqSku1fwqRvWP0MdIi14qjd93Aw==", - "type": "package", - "path": "microsoft.extensions.logging/5.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/Microsoft.Extensions.Logging.dll", - "lib/net461/Microsoft.Extensions.Logging.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", - "lib/netstandard2.1/Microsoft.Extensions.Logging.dll", - "lib/netstandard2.1/Microsoft.Extensions.Logging.xml", - "microsoft.extensions.logging.5.0.0.nupkg.sha512", - "microsoft.extensions.logging.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Microsoft.Extensions.Logging.Abstractions/5.0.0": { - "sha512": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==", - "type": "package", - "path": "microsoft.extensions.logging.abstractions/5.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net461/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", - "microsoft.extensions.logging.abstractions.5.0.0.nupkg.sha512", - "microsoft.extensions.logging.abstractions.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Microsoft.Extensions.Options/5.0.0": { - "sha512": "CBvR92TCJ5uBIdd9/HzDSrxYak+0W/3+yxrNg8Qm6Bmrkh5L+nu6m3WeazQehcZ5q1/6dDA7J5YdQjim0165zg==", - "type": "package", - "path": "microsoft.extensions.options/5.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/Microsoft.Extensions.Options.dll", - "lib/net461/Microsoft.Extensions.Options.xml", - "lib/net5.0/Microsoft.Extensions.Options.dll", - "lib/net5.0/Microsoft.Extensions.Options.xml", - "lib/netstandard2.0/Microsoft.Extensions.Options.dll", - "lib/netstandard2.0/Microsoft.Extensions.Options.xml", - "microsoft.extensions.options.5.0.0.nupkg.sha512", - "microsoft.extensions.options.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Microsoft.Extensions.Primitives/5.0.0": { - "sha512": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==", - "type": "package", - "path": "microsoft.extensions.primitives/5.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/Microsoft.Extensions.Primitives.dll", - "lib/net461/Microsoft.Extensions.Primitives.xml", - "lib/netcoreapp3.0/Microsoft.Extensions.Primitives.dll", - "lib/netcoreapp3.0/Microsoft.Extensions.Primitives.xml", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", - "microsoft.extensions.primitives.5.0.0.nupkg.sha512", - "microsoft.extensions.primitives.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Newtonsoft.Json/13.0.1": { - "sha512": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==", - "type": "package", - "path": "newtonsoft.json/13.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.md", - "lib/net20/Newtonsoft.Json.dll", - "lib/net20/Newtonsoft.Json.xml", - "lib/net35/Newtonsoft.Json.dll", - "lib/net35/Newtonsoft.Json.xml", - "lib/net40/Newtonsoft.Json.dll", - "lib/net40/Newtonsoft.Json.xml", - "lib/net45/Newtonsoft.Json.dll", - "lib/net45/Newtonsoft.Json.xml", - "lib/netstandard1.0/Newtonsoft.Json.dll", - "lib/netstandard1.0/Newtonsoft.Json.xml", - "lib/netstandard1.3/Newtonsoft.Json.dll", - "lib/netstandard1.3/Newtonsoft.Json.xml", - "lib/netstandard2.0/Newtonsoft.Json.dll", - "lib/netstandard2.0/Newtonsoft.Json.xml", - "newtonsoft.json.13.0.1.nupkg.sha512", - "newtonsoft.json.nuspec", - "packageIcon.png" - ] - }, - "NLog/4.7.10": { - "sha512": "rcegW7kYOCjl7wX0SzsqpPBqnJ51JKi1WkYb6QBVX0Wc5IgH19Pv4t/co+T0s06OS0Ne44xgkY/mHg0PdrmJow==", - "type": "package", - "path": "nlog/4.7.10", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/monoandroid44/NLog.dll", - "lib/monoandroid44/NLog.xml", - "lib/net35/NLog.dll", - "lib/net35/NLog.xml", - "lib/net40-client/NLog.dll", - "lib/net40-client/NLog.xml", - "lib/net45/NLog.dll", - "lib/net45/NLog.xml", - "lib/netstandard1.3/NLog.dll", - "lib/netstandard1.3/NLog.xml", - "lib/netstandard1.5/NLog.dll", - "lib/netstandard1.5/NLog.xml", - "lib/netstandard2.0/NLog.dll", - "lib/netstandard2.0/NLog.xml", - "lib/sl4/NLog.dll", - "lib/sl4/NLog.xml", - "lib/sl5/NLog.dll", - "lib/sl5/NLog.xml", - "lib/wp8/NLog.dll", - "lib/wp8/NLog.xml", - "lib/xamarinios10/NLog.dll", - "lib/xamarinios10/NLog.xml", - "nlog.4.7.10.nupkg.sha512", - "nlog.nuspec" - ] - }, - "NLog.Extensions.Logging/1.7.2": { - "sha512": "0y1QziAUCdePQc4itPOQF3xDcs0iE9NHlIK0hE0eA0+Ef6E9dnJDPveNu7w2ckYaDfJIFHpOoLK8sZmNEyiBCw==", - "type": "package", - "path": "nlog.extensions.logging/1.7.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "N.png", - "lib/net451/NLog.Extensions.Logging.dll", - "lib/net451/NLog.Extensions.Logging.xml", - "lib/net461/NLog.Extensions.Logging.dll", - "lib/net461/NLog.Extensions.Logging.xml", - "lib/net5.0/NLog.Extensions.Logging.dll", - "lib/net5.0/NLog.Extensions.Logging.xml", - "lib/netcoreapp3.0/NLog.Extensions.Logging.dll", - "lib/netcoreapp3.0/NLog.Extensions.Logging.xml", - "lib/netstandard1.3/NLog.Extensions.Logging.dll", - "lib/netstandard1.3/NLog.Extensions.Logging.xml", - "lib/netstandard1.5/NLog.Extensions.Logging.dll", - "lib/netstandard1.5/NLog.Extensions.Logging.xml", - "lib/netstandard2.0/NLog.Extensions.Logging.dll", - "lib/netstandard2.0/NLog.Extensions.Logging.xml", - "nlog.extensions.logging.1.7.2.nupkg.sha512", - "nlog.extensions.logging.nuspec" - ] - } - }, - "projectFileDependencyGroups": { - "net5.0": [ - "NLog >= 4.7.10", - "NLog.Extensions.Logging >= 1.7.2", - "Newtonsoft.Json >= 13.0.1" - ] - }, - "packageFolders": { - "C:\\Users\\google\\.nuget\\packages\\": {}, - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}, - "C:\\Program Files (x86)\\Microsoft\\Xamarin\\NuGet\\": {}, - "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {} - }, - "project": { - "version": "0.0.3", - "restore": { - "projectUniqueName": "D:\\GIT\\ASCKU_PC\\STPClient\\STPClient.csproj", - "projectName": "DataClient", - "projectPath": "D:\\GIT\\ASCKU_PC\\STPClient\\STPClient.csproj", - "packagesPath": "C:\\Users\\google\\.nuget\\packages\\", - "outputPath": "D:\\GIT\\ASCKU_PC\\STPClient\\obj\\", - "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages", - "C:\\Program Files (x86)\\Microsoft\\Xamarin\\NuGet\\", - "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" - ], - "configFilePaths": [ - "C:\\Users\\google\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Xamarin.Offline.config" - ], - "originalTargetFrameworks": [ - "net5.0" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net5.0": { - "targetAlias": "net5.0", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - } - }, - "frameworks": { - "net5.0": { - "targetAlias": "net5.0", - "dependencies": { - "NLog": { - "target": "Package", - "version": "[4.7.10, )" - }, - "NLog.Extensions.Logging": { - "target": "Package", - "version": "[1.7.2, )" - }, - "Newtonsoft.Json": { - "target": "Package", - "version": "[13.0.1, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\5.0.201\\RuntimeIdentifierGraph.json" - } - } - } -} \ No newline at end of file diff --git a/STPClient/obj/project.nuget.cache b/STPClient/obj/project.nuget.cache deleted file mode 100644 index 6b5a519..0000000 --- a/STPClient/obj/project.nuget.cache +++ /dev/null @@ -1,19 +0,0 @@ -{ - "version": 2, - "dgSpecHash": "EmbwZ7SwMJWgbFue8nyHBdE4ncOyGFZrHWPrhJnnAGQ3ZcXtnfZ3crT7OVc5RbuLASujwv+C2eky/VDZVjvtGg==", - "success": true, - "projectFilePath": "D:\\GIT\\ASCKU_PC\\STPClient\\STPClient.csproj", - "expectedPackageFiles": [ - "C:\\Users\\google\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\5.0.0\\microsoft.extensions.configuration.abstractions.5.0.0.nupkg.sha512", - "C:\\Users\\google\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\5.0.0\\microsoft.extensions.dependencyinjection.5.0.0.nupkg.sha512", - "C:\\Users\\google\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\5.0.0\\microsoft.extensions.dependencyinjection.abstractions.5.0.0.nupkg.sha512", - "C:\\Users\\google\\.nuget\\packages\\microsoft.extensions.logging\\5.0.0\\microsoft.extensions.logging.5.0.0.nupkg.sha512", - "C:\\Users\\google\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\5.0.0\\microsoft.extensions.logging.abstractions.5.0.0.nupkg.sha512", - "C:\\Users\\google\\.nuget\\packages\\microsoft.extensions.options\\5.0.0\\microsoft.extensions.options.5.0.0.nupkg.sha512", - "C:\\Users\\google\\.nuget\\packages\\microsoft.extensions.primitives\\5.0.0\\microsoft.extensions.primitives.5.0.0.nupkg.sha512", - "C:\\Users\\google\\.nuget\\packages\\newtonsoft.json\\13.0.1\\newtonsoft.json.13.0.1.nupkg.sha512", - "C:\\Users\\google\\.nuget\\packages\\nlog\\4.7.10\\nlog.4.7.10.nupkg.sha512", - "C:\\Users\\google\\.nuget\\packages\\nlog.extensions.logging\\1.7.2\\nlog.extensions.logging.1.7.2.nupkg.sha512" - ], - "logs": [] -} \ No newline at end of file diff --git a/SupportClasses/obj/Debug/netstandard2.0/SupportClasses.csprojAssemblyReference.cache b/SupportClasses/obj/Debug/netstandard2.0/SupportClasses.csprojAssemblyReference.cache index bfdce24..4d66f8f 100644 Binary files a/SupportClasses/obj/Debug/netstandard2.0/SupportClasses.csprojAssemblyReference.cache and b/SupportClasses/obj/Debug/netstandard2.0/SupportClasses.csprojAssemblyReference.cache differ diff --git a/Test2/Program.cs b/Test2/Program.cs index dafaa7f..c58b2ec 100644 --- a/Test2/Program.cs +++ b/Test2/Program.cs @@ -14,11 +14,15 @@ namespace Test2 { class Program { + static bool cycle = true; static void Main(string[] args) { LogConf(); - T3(); - Console.WriteLine("Hello World!"); + var t = new Task(() => T1()); + t.Start(); + Console.ReadKey(); + cycle = false; + //Console.WriteLine("Hello World!"); } static void LogConf() { @@ -52,6 +56,28 @@ namespace Test2 } static void T1() + { + var t = new NETClient("10.10.45.151", 1070); + while (cycle) + { + var arr = t.Full_Server_Time(); + Console.WriteLine(arr.ToString("yyyy.MM.dd HH.mm.ss")); + Task.Delay(1000).Wait(); + } + } + + static void OLD4() + { + var t = new NETClient("10.10.45.151", 1070); + var task1 = new Task(() => t.Full_Download(new DateTime(2021, 06, 04), 33, 1)); + var task2 = new Task(() => t.Full_Download(new DateTime(2021, 06, 04), 34, 1)); + task1.Start(); + task1.GetAwaiter().GetResult(); + task2.Start(); + task2.GetAwaiter().GetResult(); + } + + static void OLD1() { var t = new NETClient("10.10.45.151", 1070); var task = new Task(() => t.Full_Download_NH(new DateTime(2021, 06, 02), 12, 1)); @@ -69,7 +95,7 @@ namespace Test2 file.Write(res, 0, res.Length); } } - static void T3() + static void OLD2() { string[] tes = { "version", @@ -166,6 +192,26 @@ namespace Test2 } } } + static void OLD3() + { + var rnd = new Random(); + var t = new NETClient("10.10.45.151", 1070); + string[] a = null; + int c = 0; + for (var i = 0; i < 8; i++) + { + if (a == null || a.Length == 0) + a = t.Full_Dir_Browse(); + else + a = t.Full_Dir_Browse(a[c]); + Console.WriteLine((i + 1).ToString() + " test:"); + if (a != null) + foreach (var e in a) Console.WriteLine(e); + else + Console.WriteLine("NULL"); + c = (a == null) ? 0 : rnd.Next(0, a.Length); + } + } } } diff --git a/Test2/bin/Debug/net5.0/DataClient.dll b/Test2/bin/Debug/net5.0/DataClient.dll index d82d1d2..2d146cb 100644 Binary files a/Test2/bin/Debug/net5.0/DataClient.dll and b/Test2/bin/Debug/net5.0/DataClient.dll differ diff --git a/Test2/bin/Debug/net5.0/DataClient.pdb b/Test2/bin/Debug/net5.0/DataClient.pdb index c7e8e3d..87e5fb8 100644 Binary files a/Test2/bin/Debug/net5.0/DataClient.pdb and b/Test2/bin/Debug/net5.0/DataClient.pdb differ diff --git a/Test2/bin/Debug/net5.0/DataClient.xml b/Test2/bin/Debug/net5.0/DataClient.xml new file mode 100644 index 0000000..7bbaf56 --- /dev/null +++ b/Test2/bin/Debug/net5.0/DataClient.xml @@ -0,0 +1,221 @@ + + + + DataClient + + + + + Статус процесса выполнения запроса. + Предполагается использовать только на больших + загрузках и в ассинхронных задачах + + + + Коды для работы с СТП. + + + IP адрес СТП. + + + Порт СТП. + + + Количество попыток переподключения. + + + Время в секундах между попытками переподключения. + + + Основной конструктор класса NetClient. Ip-адрес - 127.0.0.1; Порт - 1070; + + + Конструктор класса NetClient с параметрами.Ip-адрес сервера.Порт сервера. + + + Получение неопределенного количество байт с сервера. Количество ограничено максимальным значением типа UInt.Открытый сетевой поток.Время ожидания между проверками буфера.Количество проверок буфера.Массив байт. + Соединение с сервером закрыто. + + Стрим недоступен для Чтения. + + Сервер сбросил соединение. + + + + Получение определенного количество байт с сервера.Открытый сетевой поток.Кол-во получаемых байт.Время ожидания между проверками буфера.Количество проверок буфера.Массив байт. Может быть меньше заданного количества. + Размер байт не должен равняться нулю. + + Стрим недоступен для записи. + + Сервер сбросил соединение. + + + + Отправка массива байт на СТП.Открытый сетевой поток.Массив байт.Результат отправки. + Размер байт не должен равняться нулю. + + Стрим недоступен для записи. + + + + Формирование массива байт на отправку.Код комманды. Конвертируется в 4 байта. (0x00 0x00 0x00 0x00)Передаваемая строка.Байты перед передаваемой строкой.Байты после передаваемой строкой.Массив байт для отправки на СТП. + + + Открытие соединения к серверу.Информирует только о подключении к серверу. Исключения опускает.Состояние подключения. + + + Проверка подключения.Состояние подключения. + + + Закрыть подключение. + + + Отправка массива байт на СТП.Массив байт для отправки.Результат отправки. + Размер байт не должен равняться нулю. + + Поток недоступен для записи. + + + + Получение неизвестного количество байт.Возвращает null, если что-то пошло не так.Массив байт. + + + Получение определенного количество байт.Количество байт.Возвращает null, если что-то пошло не так.Массив байт определенного размера. Может массив быть меньше, если в буфере не будет достаточно данных. + + + Внутренняя функция для создания подключения.Возвращает флаг необходимости закрытия соединения. + Не получилось соединиться с сервером. + + + + Внетренняя функция для закрытия соединения.Флаг о необходимости закрыть соединение. + + + Внутренняя функция получения файлов.Код, который будет отправлен на сервер.Дата. Из неё формируется строка в формате YYYMMDD.Номер печи. 00 - общецеховые параметры.Индекс файла. От 0 до 15.Массив байт, соответствующий запрашиваемому файлу. + Неверный код, для получения файла. + Неверный флаг во время получения файла. + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + Не получилось соединиться с сервером. + + + + Получение файла данных (байтами) с СТП.Дата. Из неё формируется строка в формате YYYMMDD.Номер печи. 00 - общецеховые параметры.Индекс файла. От 0 до 15.Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации.Обработанный массив байт. + Неверный код, для получения файла. + Неверный флаг во время получения файла. + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + Не получилось соединиться с сервером. + + + + Получение файла данных (байтами) с СТП.Дата. Из неё формируется строка в формате YYYMMDD.Номер печи. 00 - общецеховые параметры.Индекс файла. От 0 до 15.Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации.Обработанный массив байт. + Неверный код, для получения файла. + Неверный флаг во время получения файла. + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + Не получилось соединиться с сервером. + + + + Получение файла данных (байтами) с СТП.Название команды.Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации.Массив байт, соответствующий этой команде. Может вернуть null. + Неверный флаг во время получения файла. + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + Не получилось соединиться с сервером. + + + + Получение структуры файлов и папок в запрашиваемой директории.Путь, структуру которого надо отобразить.Выполняет автоподключение, если оно не установлено. Не все ошибки описаны в документации.Массив строк. Полные пути к файлам и папкам. Может вернуть null. + Неверный флаг окончания строки. + Неверный флаг во время получения файла. + + Предыдущий запрос не закончен. + Поток недоступен для записи. + + Не получилось соединиться с сервером. + + + + + Класс для связи с СТП. Содержит все инструменты, для получения данных. + + + + Номер сервера, используемого по умолчанию. + + + Массив серверов, инициализированных в экземпляре класса. + + + Получение номера сервера по его названию. + Название сервера. + Номер сервера в списке серверов. + + + Получение название сервера по его номеру. + Номер сервера в списке серверов. + Название сервера. + + + Проверка параметров серевера перед их добавлением в список. + IP адресс сервера. + Порт сервера. + Путь к архиву. + Результат выполнения функции. + + + Добавление сервера в список серверов. + Название сервера + IP адресс сервера. + Порт сервера. + Путь к архиву. + Результат выполнения функции. + + + Изменение сервера в списке серверов по его номеру. + Номер сервера в списке серверов. + Название сервера. + IP адресс сервера. + Порт сервера. + Путь к архиву. + Результат выполнения функции. + + + Изменение сервера в списке серверов по его названию. + Название сервера. + IP адресс сервера. + Порт сервера. + Путь к архиву. + Результат выполнения функции. + + + Удаление сервера из списка серверов по его номеру. + Номер сервера в списке серверов. + Результат выполнения функции. + + + Удаление сервера из списка серверов по его названию. + Название сервера. + Результат выполнения функции. + + + Чтение конфигурационнного файла и установка параметров по умолчанию. + + + Создание экземпляра класса. + + + Создание экземпляра класса с указанием конфигурационного файла. + Путь к файлу конфигурации. + + + diff --git a/Test2/bin/Debug/net5.0/Test2.dll b/Test2/bin/Debug/net5.0/Test2.dll index 66f9e02..a50aeed 100644 Binary files a/Test2/bin/Debug/net5.0/Test2.dll and b/Test2/bin/Debug/net5.0/Test2.dll differ diff --git a/Test2/bin/Debug/net5.0/Test2.pdb b/Test2/bin/Debug/net5.0/Test2.pdb index 71e6a59..aad5f86 100644 Binary files a/Test2/bin/Debug/net5.0/Test2.pdb and b/Test2/bin/Debug/net5.0/Test2.pdb differ diff --git a/Test2/bin/Debug/net5.0/ref/Test2.dll b/Test2/bin/Debug/net5.0/ref/Test2.dll index baa4471..8660f4b 100644 Binary files a/Test2/bin/Debug/net5.0/ref/Test2.dll and b/Test2/bin/Debug/net5.0/ref/Test2.dll differ diff --git a/Test2/obj/Debug/net5.0/Test2.csproj.FileListAbsolute.txt b/Test2/obj/Debug/net5.0/Test2.csproj.FileListAbsolute.txt index 7af7a15..4146f0e 100644 --- a/Test2/obj/Debug/net5.0/Test2.csproj.FileListAbsolute.txt +++ b/Test2/obj/Debug/net5.0/Test2.csproj.FileListAbsolute.txt @@ -28,3 +28,4 @@ D:\GIT\ASCKU_PC\Test2\obj\Debug\net5.0\Test2.pdb D:\GIT\ASCKU_PC\Test2\obj\Debug\net5.0\Test2.genruntimeconfig.cache D:\GIT\ASCKU_PC\Test2\bin\Debug\net5.0\DataClient.dll D:\GIT\ASCKU_PC\Test2\bin\Debug\net5.0\DataClient.pdb +D:\GIT\ASCKU_PC\Test2\bin\Debug\net5.0\DataClient.xml diff --git a/Test2/obj/Debug/net5.0/Test2.csprojAssemblyReference.cache b/Test2/obj/Debug/net5.0/Test2.csprojAssemblyReference.cache index 4515da9..be50597 100644 Binary files a/Test2/obj/Debug/net5.0/Test2.csprojAssemblyReference.cache and b/Test2/obj/Debug/net5.0/Test2.csprojAssemblyReference.cache differ diff --git a/Test2/obj/Debug/net5.0/Test2.dll b/Test2/obj/Debug/net5.0/Test2.dll index 66f9e02..a50aeed 100644 Binary files a/Test2/obj/Debug/net5.0/Test2.dll and b/Test2/obj/Debug/net5.0/Test2.dll differ diff --git a/Test2/obj/Debug/net5.0/Test2.pdb b/Test2/obj/Debug/net5.0/Test2.pdb index 71e6a59..aad5f86 100644 Binary files a/Test2/obj/Debug/net5.0/Test2.pdb and b/Test2/obj/Debug/net5.0/Test2.pdb differ diff --git a/Test2/obj/Debug/net5.0/ref/Test2.dll b/Test2/obj/Debug/net5.0/ref/Test2.dll index baa4471..8660f4b 100644 Binary files a/Test2/obj/Debug/net5.0/ref/Test2.dll and b/Test2/obj/Debug/net5.0/ref/Test2.dll differ