Ответ от асинхронного сервера - C#

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

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

Добра. Решил написать асинхронный сервер. Сначала полёт был отличный. Писал опираясь на статью

(Почти копипаста)

Всё работает шикарно: Клиент подключился - Прочитали его запрос - дали ответ - закрыли сокет.
handler.Shutdown(SocketShutdown.Both);
handler.Close();
И так по кругу. Ок. А что делать, если потом серверу нужно отправить клиенту данные, даже если клиент не подключался заново и ничего не просил? Может можно как-то опять открыть сокет, или его вообще не закрывать? Если не закрывать, то как это должно работать, ведь handler.BeginReceive вызывается только в AcceptCallback. Спасибо

Решение задачи: «Ответ от асинхронного сервера»

textual
Листинг программы
            if (content.IndexOf("<EOF>") > -1) {
                // All the data has been read from the 
                // client. Display it on the console.
                Console.WriteLine("Read {0} bytes from socket. \n Data : {1}",
                    content.Length, content );
                // Echo the data back to the client.
                Send(handler, content);
            } else {
                // Not all data received. Get more.
                handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback), state); // <-- Вот тут
            }

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


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

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

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