Ответ от асинхронного сервера - C#
Формулировка задачи:
Добра.
Решил написать асинхронный сервер. Сначала полёт был отличный.
Писал опираясь на статью
И так по кругу.
Ок. А что делать, если потом серверу нужно отправить клиенту данные, даже если клиент не подключался заново и ничего не просил?
Может можно как-то опять открыть сокет, или его вообще не закрывать?
Если не закрывать, то как это должно работать, ведь handler.BeginReceive вызывается только в AcceptCallback.
Спасибо
(Почти копипаста)
Всё работает шикарно: Клиент подключился - Прочитали его запрос - дали ответ - закрыли сокет.handler.Shutdown(SocketShutdown.Both); handler.Close();
Решение задачи: «Ответ от асинхронного сервера»
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); // <-- Вот тут }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д