Сокеты Windows. Уведомления сокетов

В этой статье описываются функции уведомлений в классах сокета. Эти функции-члены — это функции обратного вызова, которые платформа вызывает для уведомления объекта сокета о важных событиях. Функции уведомлений:

  • OnReceive: уведомляет этот сокет о наличии данных в буфере для получения путем вызова Receive.

  • OnSend: уведомляет этот сокет о том, что теперь он может отправлять данные путем вызова Send.

  • OnAccept: уведомляет этот сокет прослушивания о том, что он может принимать ожидающие запросы на подключение путем вызова Accept.

  • В Подключение: уведомляет этот сокет о завершении попытки подключения: возможно, успешно или, возможно, в ошибке.

  • OnClose: уведомляет этот сокет о закрытии сокета, к которому он подключен.

    Примечание.

    Дополнительная функция уведомления — OnOutOfBandData. Это уведомление сообщает принимающему сокету, что для отправки сокета есть данные вне диапазона. Внеполосные данные — это логически независимый канал, связанный с каждой парой подключенных сокетов потоков. Канал вне диапазона обычно используется для отправки "срочных" данных. MFC поддерживает внеполосные данные. Расширенным пользователям, работающим с классом CAsyncSocket , может потребоваться использовать исходящий канал, но пользователям класса CSocket не рекомендуется использовать его. Проще создать второй сокет для передачи таких данных. Дополнительные сведения о внеполосных данных см. в спецификации сокетов Windows, доступной в пакете SDK для Windows.

Если вы наследуете от класса CAsyncSocket, необходимо переопределить функции уведомлений для этих сетевых событий, интересующих ваше приложение. Если вы наследуете класс из класса CSocket, вы можете переопределить интересующие функции уведомлений. Вы также можете использовать CSocket себя, в этом случае функции уведомлений по умолчанию не делают ничего.

Эти функции переопределяются функциями обратного вызова. CAsyncSocket и CSocket преобразуйте сообщения в уведомления, но необходимо реализовать способ реагирования функций уведомлений, если вы хотите их использовать. Функции уведомлений вызываются во время уведомления о событии, интересующемом сокете, например о присутствии данных для чтения.

MFC вызывает функции уведомлений, чтобы настроить поведение сокета во время уведомления. Например, вы можете вызвать Receive функцию OnReceive уведомлений, то есть получать уведомления о том, что есть данные для чтения, вы вызываете Receive его для чтения. Этот подход не нужен, но это допустимый сценарий. В качестве альтернативы можно использовать функцию уведомления для отслеживания хода выполнения, печати сообщений TRACE и т. д.

Вы можете воспользоваться этими уведомлениями, переопределив функции уведомлений в производном классе сокета и предоставив реализацию.

Во время операции, например получения или отправки данных, CSocket объект становится синхронным. Во время синхронного состояния все уведомления, предназначенные для других сокетов, помещаются в очередь, пока текущий сокет ожидает уведомления, которое он хочет. (Например, во время Receive вызова сокет хочет, чтобы уведомление было прочитано.) После завершения синхронной операции сокета и асинхронного восстановления другие сокеты могут начать получение очередных уведомлений.

Примечание.

В CSocketфункции OnConnect уведомления никогда не вызывается. Для подключений вызывается Connect, который возвращается при завершении подключения (успешно или в ошибке). Обработка уведомлений о подключении — это сведения о реализации MFC.

Дополнительные сведения о каждой функции уведомлений см. в разделе "Функция под классомCAsyncSocket" в справочнике по MFC. Исходный код и сведения о примерах MFC см. в примерах MFC.

Дополнительные сведения см. в разделе:

См. также

Сокеты Windows в MFC