Клиент-серверное приложение. Переменная из события таймера - C#

Узнай цену своей работы

Формулировка задачи:

Подскажите пожалуйста, есть клиент, который должен на сервер отправлять определенное сообщение через равный интервал времени, к примеру 10 секунд. Не совсем понимаю, как из MessageEvent вытянуть переменную, чтоб потом ее использовать в методе Main. В переменной храниться в формате строки число от 1 до N и DateTime.Now. Вот код:
Листинг программы
  1. namespace Client
  2. {
  3. class Program
  4. {
  5. const int port = 8888;
  6. const string address = "127.0.0.1";
  7. static string message;
  8. static int packNum = 0;
  9. public static void MessageEvent(object source, ElapsedEventArgs e)
  10. {
  11. message = string.Format("{0}: {1}", packNum++, DateTime.Now);
  12. }
  13. static void Main(string[] args)
  14. {
  15. TcpClient client = null;
  16. try
  17. {
  18. client = new TcpClient(address, port);
  19. NetworkStream stream = client.GetStream();
  20. while (true)
  21. {
  22. System.Timers.Timer myTimer = new System.Timers.Timer();
  23. myTimer.Elapsed += new ElapsedEventHandler(MessageEvent);
  24. myTimer.Interval = 10000;
  25. myTimer.Start();
  26. byte[] data = Encoding.Unicode.GetBytes(message); //вот сюда нужно передать переменную message из MessageEvent
  27. // отправка сообщения
  28. stream.Write(data, 0, data.Length);
  29. }
  30. }
  31. catch (Exception ex)
  32. {
  33. Console.WriteLine(ex.Message);
  34. }
  35. finally
  36. {
  37. client.Close();
  38. }
  39. }
  40. }
  41. }

Решение задачи: «Клиент-серверное приложение. Переменная из события таймера»

textual
Листинг программы
  1. namespace Client
  2. {
  3.     class Program
  4.     {
  5.         static void Main(string[] args)
  6.         {
  7.             try
  8.             {
  9.                 TcpWriter tcpWriter = new TcpWriter(8888, "127.0.0.1", 100);
  10.                 tcpWriter.Run();
  11.             }
  12.             catch (Exception ex)
  13.             {
  14.                 Console.WriteLine(ex.Message);
  15.             }
  16.             Console.ReadLine();
  17.         }
  18.     }
  19.  
  20.     class TcpWriter
  21.     {
  22.         TcpClient client;
  23.         NetworkStream stream;
  24.         int packNum = 0;
  25.         int maxPackNum;
  26.  
  27.         public TcpWriter(int port, string address, int maxPackNum)
  28.         {
  29.             client = new TcpClient(address, port);
  30.             stream = client.GetStream();
  31.             this.maxPackNum = maxPackNum;
  32.         }
  33.  
  34.         public void Run()
  35.         {
  36.             System.Timers.Timer myTimer = new System.Timers.Timer();
  37.             myTimer.Elapsed += new ElapsedEventHandler(MessageEvent);
  38.             myTimer.Interval = 1000;
  39.             myTimer.Start();
  40.         }
  41.  
  42.         public void MessageEvent(object source, ElapsedEventArgs e)
  43.         {
  44.             string message = string.Format("{0}: {1}", packNum++, DateTime.Now);
  45.             byte[] data = Encoding.Unicode.GetBytes(message);
  46.             stream.Write(data, 0, data.Length);
  47.             if (packNum > maxPackNum)
  48.             {
  49.                 (source as System.Timers.Timer).Stop();
  50.                 client.Close();
  51.             }
  52.         }
  53.     }
  54. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы