/// <summary> /// Запуск сервера TCP подключений /// </summary> public void ZapuskServera() { const string ip = "127.0.0.1"; //const string ip = "192.168.1.189"; const int port = 8090; string textLog = ""; DateTime dateTime = DateTime.Now; // получение текущей даты // обьект для обьединения ip адреса и порта. сетевую конечную точку в виде IP-адреса var tcpEndPoint = new IPEndPoint(IPAddress.Parse(ip), port); //Cocket. В качестве параметра передаем Тип и схема подключения для сокета((используется ip 4 версии)). Тип самого сокета(выб поток) Потом пип конкретного протокола var tcpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // Связывание сокета с настройками(какой ip и порт слушать). tcpSocket.Bind(tcpEndPoint); // запуск сокета на прошлушку порта.В качестве параметров указываем количество подключений клиентов tcpSocket.Listen(5); // процесс прошлушивания порта textLog = $"{dateTime}\t\nЗапуск службы прошлушивания IP{ip} И Potr{port}"; Console.WriteLine($"\t\nЗапуск службы прошлушивания IP{ip} И Potr{port}"); while (true) { // создает новый сокет для каждого нового подключения var listener = tcpSocket.Accept(); //бефер для подключения. данные из 2 сокетов.(клиента и сокета) хранятся и передаются в байтовым видом var buffer = new byte[256]; // хранение данных полученные из сокета var size = 0; // реальное количество байт var data = new StringBuilder(); // Изменяеммая строка. do // цикл с пост условием. { size = listener.Receive(buffer); // получаем данные из сокета. data.Append(Encoding.UTF8.GetString(buffer, 0, size)); // добавляем в строку данные из буфера с указанной кодировкой } while (listener.Available > 0); // Проверяем что полученное значение больше 0 Console.WriteLine($"{data}"); //TODO строку // отправка ответа listener.Send(Encoding.UTF8.GetBytes("\t\n Соединение установленно!")); // отправление байтов textLog += $"\n{dateTime}: Успех! \t\n Соединение установленно!"; // запись в лог listener.Shutdown(SocketShutdown.Both); // закрываем соединение сокета у клиента и у сервера listener.Close(); // закрытие и освобождение ресурсов сокета textLog += $"\t\n{TekDateTime()}:Закрытие соединения"; RabFail.ZapisFailaText(textLog); // запись лога в файл } //Console.WriteLine(""); }
/// <summary> /// aсинхронный метод обертку над нужным методом /// </summary> public async static Task RabThreadAsync() { Console.WriteLine("Работаем с асинронными методами"); // aсинхронный метод обертку над нужным методом // Task DoWorkAsync(); // через ананимную лямбу вызываем нужный метод // await Task.Run(()=> RabFail.DoWork()); await Task.Run(() => RabFail.DoWorkTest(55040)); Console.ReadKey(); }
/// <summary> /// запуск асинхронного метода рандомации и записи интовых значений в файл /// </summary> /// <returns></returns> public async static Task RandomTextFailZapis() { Console.WriteLine("**********Запуск асинхронного метода RandomTextFailZapis***********"); await Task.Run(() => RabFail.RandomZapisFailaInt()); }
/// <summary> /// aсинхронный метод обертку над нужным методом с Параметрами /// </summary> public async static Task RabThreadParametrAsync(int paramss) { Console.WriteLine("Работаем с асинронными методами c указанием параметра"); await Task.Run(() => RabFail.DoWorkTest(paramss)); }