Поделиться через


Windows sockets: Использование класса CAsyncSocket

В этой статье описывается, как использовать класс CAsyncSocket.Учтите, что этот класс инкапсулирует API Windows sockets на очень низком уровне.CAsyncSocket для использования программистами, которые знают сетью подробно, но хочет удобство обратных вызовов для уведомления событий сети.На основе этого предположении, эта статья содержит только базовую инструкцию.Возможно, следует рассмотреть возможность использования CAsyncSocket если требуется простота Windows sockets работать с несколькими сетевыми протоколами, в приложении MFC, но не хотите пожертвовать гибкость.Также можно чувствовать, что самостоятельно получить более высокую эффективность путем программирования сообщения, можно непосредственно, чем использование более общую модель CSocket альтернативную класса.

CAsyncSocket описывается в справочнике по MFC.Visual C++ предоставляет также спецификация Windows sockets, расположенная в Windows SDK.Сведения слева.Visual C++ не предоставляет пример приложения для CAsyncSocket.

Если не знающий о связях системы, простое решение, используйте класс CSocket с объектом CArchive.Дополнительные сведения см. в разделе Windows sockets: Использование сокета с архивами.

В этой статье описывается:

  • Создание и использование объекта CAsyncSocket.

  • Ваши обязанности с CAsyncSocket.

Создание и использование объекта CAsyncSocket

Использовать CAsyncSocket

  1. Создайте объект CAsyncSocket и использование объекта, чтобы создать основной маркер SOCKET.

    Создание сокеты MFC двухступенной соответствуют основному шаблону проектирования.

    Примеры.

    CAsyncSocket sock;
    sock.Create( );    // Use the default parameters                    
    

    -или-

    CAsyncSocket* pSocket = new CAsyncSocket;
    int nPort = 27;
    pSocket->Create( nPort, SOCK_DGRAM );                    
    

    Первый конструктор создает объект CAsyncSocket выше в стеке.Второй конструктор создает CAsyncSocket в куче.Первый вызов Создать выше используются параметры по умолчанию для создания сокета потока.Второй вызов Создать создает сокет датаграмм с указанным портом и адресом.(Можно использовать любую версию Создать с любым методом конструирования).

    Параметры Создать:

    • «Порт»: короткое целое число.

      Для сокета сервера, необходимо задать порт.Для сокета клиента обычно нужно принять значение по умолчанию для этого параметра, который позволяет Windows sockets выбрать порт.

    • Тип сокета. SOCK_STREAM (по умолчанию) или SOCK_DGRAM.

    • Сокет «адрес» в виде «ftp.microsoft.com» или «128.56.22.8».

      Это ваш адрес IP (IP) в сети.Вероятно, всегда будет зависеть от значений по умолчанию для этого параметра.

    Термины «порт» и «адрес сокета» описаны в Windows sockets: Порты и адрес сокета.

  2. Если сокет клиента, подключитесь к гнезду объект сокета сервера, используя CAsyncSocket::Connect.

    -или-

    Если у сокета сервера, установите сокет, с которого начинается прослушивание (с CAsyncSocket::Listen) для попытки подключения клиента.При получении запроса соединения, примите его с CAsyncSocket::Accept.

    После принятия запроса на подключения, можно выполнять такие задачи, как проверка пароли.

    ПримечаниеПримечание

    Функция-член Принять принимает ссылку на новый, пустой объект CSocket в качестве параметра.Этот объект необходимо построить до вызова Принять.Если этот объект сокета выходит из области, то закрывает соединение.Не вызывайте Создать для этого нового объекта сокета.Пример см. в статье Windows sockets: последовательность операций.

  3. Выполнить сообщения с другими гнездами путем вызова функции-члены объекта CAsyncSocket, которые инкапсулируют функции API-интерфейса Windows sockets.

    См. Windows sockets спецификацию и класс CAsyncSocket в справочнике по MFC.

  4. Уничтожить объект CAsyncSocket.

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

    Деструктор вызывается функция-член Закрыть объекта перед разрушать объект.

Пример этой последовательности в коде (фактически для объекта CSocket ) см. в разделе Windows sockets: последовательность операций.

Ваши обязанности с CAsyncSocket

При создании объекта класса CAsyncSocket объект инкапсулирует дескриптор SOCKET окон и предоставляет операции на дескрипторе.При использовании CAsyncSocket необходимо работать со всеми проблемами можно искать на при использовании API напрямую.Примеры.

  • Запрет» скрипт «.

  • Различия в отправляющее и принимающее порядка байтов между компьютерами.

  • Преобразование между строками в юникоде и многобайтовой кодировки (mbcs).

Для определений этих терминов и дополнительные сведения см. в разделе Windows sockets: Отключение, Windows sockets: Порядок байтов, Windows sockets: Преобразование строк.

Несмотря на эти вопросы, класс CAsycnSocket может быть правым выбором, если приложение требует всей гибкости и отслеживает можно получить.Если нет, следует рассмотреть использование класса CSocket.Скрывает многие из CSocket сведения: он нагнетает сообщения windows во время отключения вызовы и обеспечивает доступ к CArchive, который управляет различия в порядка байтов и преобразование строки.

Дополнительные сведения см. в следующих разделах.

См. также

Основные понятия

Windows sockets в MFC