Клиент-серверное приложение. Переменная из события таймера - 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();
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д