Событийная модель соединения сокетов.
Класс WinSock позволяет работать с сокетами в рамках трех подходов, против двух классических. А именно, обычная блокирующая передача данных, неблокирующая передача данных, событийно ориентированная передача данных.
При 3 подходе создаваемый сокет имеет ряд связанных с ним событий, реакцию на которые определяет пользователь.
Общеизвестный факт, что все ПО развивается в сторону унификации интерфейса, это позволяет значительно упростить и ускорить его использование для пользователя. Вполне логично, что унификация программного API приводит к более эффективному и грамотному его использованию программистами, которые выступают в роли потребителей API. В событийном подходе мы исходим от события, мы знаем для какого сокета есть новости.
Если задуматься на тему что такое поступление новых данных в сокет или, например, что такое закрытие сокета с другой стороны. Можно придти к простому выводу - это события. Такие же события, как наступления времени Х или любое другое событие в программе. Более того, абсолютно законна постановка вопроса: "ждем пока произойдет какое-нибудь событие или пока придут данные от сокета". Поэтому это правильно и логично, что и работа с сокетами должна строится на событиях.
Для работы с сокетами в ходе лаб использовался класс CAsyncSocket, который инкапсулирует возможности работы с WinSock. Основными событиями в данном классе являются следующие:
OnAccept | Уведомляет слушающий сокет (сервера) о приходе запроса на установление соединения от удаленного сокета (клиента; метод Accept). |
OnClose | Уведомляет сокет о разрыве соединения с ним. |
OnConnect | Уведомляет сокет, пытающийся установить соединение, о том, что попытка соединения завершена (как успешно, так и с ошибкой). |
OnReceive | Уведомляет сокет о наличии в буфере принятых данных, которые могут быть прочитаны с помощью вызова Receive. |
OnSend | Уведомляет сокет о возможности передачи данных с помощью вызова Send. |
Источники:
http://www.kalinin.ru/programming/network/12_12_00.shtml
http://msdn2.microsoft.com/en-us/library/09353w3t(VS.80).aspx
Дата добавления: 2014-12-24; просмотров: 690;