Клиент-серверное приложение. Переменная из события таймера - 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();
            }
        }
    }
}

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


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

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

6   голосов , оценка 4.167 из 5
Похожие ответы