Клиент-серверное приложение. Переменная из события таймера - C#
Формулировка задачи:
Подскажите пожалуйста, есть клиент, который должен на сервер отправлять определенное сообщение через равный интервал времени, к примеру 10 секунд. Не совсем понимаю, как из MessageEvent вытянуть переменную, чтоб потом ее использовать в методе Main. В переменной храниться в формате строки число от 1 до N и DateTime.Now. Вот код:
namespace Client { class Program { const int port = 8888; const string address = "127.0.0.1"; static string message; static int packNum = 0; public static void MessageEvent(object source, ElapsedEventArgs e) { message = string.Format("{0}: {1}", packNum++, DateTime.Now); } static void Main(string[] args) { TcpClient client = null; try { client = new TcpClient(address, port); NetworkStream stream = client.GetStream(); while (true) { System.Timers.Timer myTimer = new System.Timers.Timer(); myTimer.Elapsed += new ElapsedEventHandler(MessageEvent); myTimer.Interval = 10000; myTimer.Start(); byte[] data = Encoding.Unicode.GetBytes(message); //вот сюда нужно передать переменную message из MessageEvent // отправка сообщения stream.Write(data, 0, data.Length); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { client.Close(); } } } }
Решение задачи: «Клиент-серверное приложение. Переменная из события таймера»
textual
Листинг программы
namespace Client { class Program { static void Main(string[] args) { try { TcpWriter tcpWriter = new TcpWriter(8888, "127.0.0.1", 100); tcpWriter.Run(); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); } } class TcpWriter { TcpClient client; NetworkStream stream; int packNum = 0; int maxPackNum; public TcpWriter(int port, string address, int maxPackNum) { client = new TcpClient(address, port); stream = client.GetStream(); this.maxPackNum = maxPackNum; } public void Run() { System.Timers.Timer myTimer = new System.Timers.Timer(); myTimer.Elapsed += new ElapsedEventHandler(MessageEvent); myTimer.Interval = 1000; myTimer.Start(); } public void MessageEvent(object source, ElapsedEventArgs e) { string message = string.Format("{0}: {1}", packNum++, DateTime.Now); byte[] data = Encoding.Unicode.GetBytes(message); stream.Write(data, 0, data.Length); if (packNum > maxPackNum) { (source as System.Timers.Timer).Stop(); client.Close(); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д