Сокеты Windows. Использование класса CAsyncSocket
В этой статье описывается, как использовать класс CAsyncSocket. Обратите внимание, что этот класс инкапсулирует API Windows SSL на очень низкого уровня. CAsyncSocket для использования программистами, знающие сетевого подробно, но хочет воспользоваться удобствами обратных вызовов для уведомления событий сети. На основе этого допущении, этот раздел содержит только базовую инструкцию. Возможно, следует рассмотреть использование CAsyncSocket при необходимости простота Windows sockets работать с несколькими сетевыми протоколами в приложении MFC, но не требуется пожертвовать гибкость. Можно также заполнение, можно получить более высокую эффективность, программировать сообщения самостоятельно более непосредственно, чем можно с помощью более общей модели альтернативной класса CSocket.
CAsyncSocket документировано в справочнике по MFC. C Visual C++ также предоставляет спецификацию Windows SSL, расположенная в Windows SDK. Данные остаются вам. C Visual C++ не предоставляет пример приложения для CAsyncSocket.
Если изменяются не знающий о связях системы и не требуется простое решение следует использовать класс CSocket с объектом CArchive. Дополнительные сведения см. в разделе Windows SSL. С помощью сокетов с архивами.
Этот раздел охватывает:
Создание и использование объекта CAsyncSocket.
Ваши обязанности с CAsyncSocket.
Создание и использование объекта CAsyncSocket
Использовать CAsyncSocket
Создает объект 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 порт SSL.
Тип сокета. SOCK_STREAM (по умолчанию) или SOCK_DGRAM.
Сокет «адрес», например «ftp.microsoft.com» или «128.56.22.8».
Это ваш адрес (IP) протокол IP в сети. Возможно, всегда будет зависеть от значения по умолчанию для данного параметра.
Термин «порт» и «адрес сокета» рассматриваются в разделе Windows SSL. Порты и адреса сокета.
Если клиент сокет подключите объект сокета сокета сервера, используя CAsyncSocket::Connect.
– или –
Если сервер сокет, задайте сокет, чтобы начать ожидать (с CAsyncSocket::Listen) для попытки подключения от клиента. При получении запроса подключения, примите его с помощью CAsyncSocket::Accept.
После принятия подключения можно выполнять такие задачи, как проверка пароли.
Примечание
Функцию-член Принять принимает ссылку на новый, пустой объект CSocket в качестве параметра.Необходимо построить этот объект перед вызовом Принять.Если этот объект сокета выходит за пределы области, закроет подключение.Не вызывайте метод Создать для нового объекта сокета.Пример см. в статье Windows SSL. Последовательность операций.
Проделайте сообщения с другими сокетами путем вызова функции-члены объекта CAsyncSocket, содержащие функции API Windows SSL.
В разделе Windows sockets спецификацию и CAsyncSocket в справочнике по MFC.
Удалите объект CAsyncSocket.
При создании объекта сокета в стеке, его при вызове деструктора, функция выходит за пределы области действия. При создании объекта сокета в куче, с помощью оператора новый, то ответственность за использование оператора удалить для удаления объекта.
Деструктор функции-члена Закрыть объекта, прежде чем удалить объект.
Пример этой последовательности в коде (фактически для объекта CSocket ) см. в разделе Windows SSL. Последовательность операций.
Ваши обязанности с CAsyncSocket
При создании объекта класса CAsyncSocket, содержащий дескриптор объекта SOCKET Windows и операции, на этом дескрипторе. При использовании CAsyncSocket необходимо работать со всеми проблемами можно смотреть на при использовании API напрямую. Примеры.
«Блокировки» сценарии.
Различия в порядка байтов отправя и время между компьютерами.
Преобразование между юникод и строками многобайтовой кодировки (MBCS).
Для определения этих терминов и дополнительные сведения см. в разделах Windows SSL. Блокировка, Windows SSL. Порядок байтов, Windows SSL. Преобразования строк.
Несмотря на эти вопросы, класс CAsycnSocket самый лучший вариант для, если приложению требуется всей гибкости и элемент управления можно получить. Если нет, необходимо рассмотреть возможность использования класса CSocket вместо. CSocket скрывает много компонентов пользователя: он нагнетает сообщения Windows во время заблокированных вызовов и обеспечивает доступ к CArchive, управляющий различия в и преобразование строк порядка байтов автоматически.
Дополнительные сведения см. в следующих разделах: