Эхо клиент сервер

288
03 декабря 2017, 10:40

Здравствуйте, реализую клиент-сервер по типу-эхо: клиент каждые 10 секунд шлет пакет серверу, а тот отвечает. Если нужно отрубить клиента, то все нормально, нет ни запроса, ни ответа на сервере, сервер просто слушает, пока клиент не пришлет что-нибудь. Но если отрубается сервер-программа, то клиент все равно шлет пакеты даже не дожидаясь ответа, так как при запуске повторно сервера в логе накапливаются запоздалые пакеты разом, которые накопились за время пока сервер был выключен. Как это исключить?

Answer 1
           static public void mythread2()
         {
        //IPHostEntry ipHost = Dns.GetHostEntry("localhost");
        // IPAddress ipAddr = 
        IPAddress.Parse("192.168.42.102");/////////////////////////
        ///
        IPAddress ipAddr = 
         IPAddress.Parse("192.168.42.102");/////////////////////////

        IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 7712);


            // Создаем сокет Tcp/Ip
            sListener = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            // Назначаем сокет локальной конечной точке и слушаем входящие сокеты
            try
            {
                sListener.Bind(ipEndPoint);
                sListener.Listen(1);

            // Начинаем слушать соединения

         while (true)
              {


               Socket handler = sListener.Accept();


                // Программа приостанавливается, ожидая входящее соединение
                data = null;

                // Мы дождались клиента, пытающегося с нами соединиться

            byte[] bytes = new byte[handler.ReceiveBufferSize];
          int bytesRec = handler.Receive(bytes);

            data += Encoding.Default.GetString(bytes, 0, bytesRec);
               Console.WriteLine(data);
              //string TT = "888";
                // byte[] msg = Encoding.UTF8.GetBytes(TT);
                byte[] msg = new byte[2];
                msg[0] = 0x2;
                msg[1] = 0x3;

                //handler.Send(Message);
                handler.Send(msg);


               handler.Shutdown(SocketShutdown.Both);
               handler.Close();


            }

        }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            sListener.Close();
        }
            finally
            {
            }

    }
READ ALSO
Как получить доступ к классу настроек приложения из библиотеки dll?

Как получить доступ к классу настроек приложения из библиотеки dll?

Имеется приложение и подключенная к нему библиотекаНеобходимо из библиотеки изменить некоторые настройки (user settings)

245
Неправильное отображение Версии Windows

Неправильное отображение Версии Windows

Всем приветРаботаю с Visual Studio 2012 и на Windows 10

275
Реализовать placeholder в UserControl

Реализовать placeholder в UserControl

Доброго времени суток, всемЯ так понимаю, в WPF нет контрола, который будет похож на TextBox и иметь свойство placeholder'а

297
Установка selectItem после удаления элемента

Установка selectItem после удаления элемента

Имеется простой listBox, с него пользователь может удалить выбранные элементы, те

255