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


Сокеты Windows. Использование сокетов с архивами

В этом разделе описываются Модель программирования CSocket. Поддержка сокета предоставляет CSocket класса на более высоком уровне абстракции, что и класс CAsyncSocket. CSocket использует версию протокола сериализации MFC для передачи данных и обратное преобразование объекта сокета через объект CArchive библиотеки MFC. CSocket предоставляет блокировку (пока управление фоновый обработки сообщений Windows) и предоставляет доступ к CArchive, управляющий множество аспектов сообщений, необходимо сделать использование или необработанные API или класс CAsyncSocket.

Совет

Класс можно CSocket использоваться сама по себе, как более удобной версия CAsyncSocket, но наиболее простая модель программирования использовать CSocket с объектом CArchive.

Дополнительные сведения о, как реализация сокетов с архивами работает, см. в разделе Сокеты Windows. Работа сокетов с архивами. Например код см. в разделах Сокеты Windows. Последовательность операций и Сокеты Windows. Пример сокетов с использованием архивов. Дополнительные сведения о некоторых функций можно увеличить свои собственные классы, производные от классов сокетов, см. в разделе Сокеты Windows. Наследование от классов сокета.

Примечание

При создании клиентской программы MFC для связи с установленными серверами библиотек (), не отправлять объекты C++ по архивным.Если сервер не будет приложение MFC, понимает типы объектов требуется отправить, он не сможет получить и поиск объекты.Для соответствующих материала на предмете взаимодействия с приложениями библиотеки также см. статью Сокеты Windows. Порядок байтов.

Модель программирования CSocket

С помощью объекта CSocket включает в себя создание и связать вместе несколько объектов классов MFC. В общей процедуре ниже, каждый предпринят сокетом как сервера, так и сокетом клиента, за исключением шага 3, в котором каждый тип сокета различаются действия.

Совет

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

Настройка связь между сокетом сокетом клиента и сервера

  1. Создайте объект CSocket.

  2. Использование объекта для создания основной дескриптор SOCKET.

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

    Примечание

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

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

    – или –

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

    Примечание

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

  4. Создайте объект CSocketFile и сопоставляет объект CSocket с ним.

  5. Создайте объект CArchive для получения или загрузки () или хранить сведения (отправки). Архив связан с объектом CSocketFile.

    Имейте в виду, что CArchive не работает с сокетами датаграмм.

  6. Используйте объект CArchive для передачи данных между клиентом и сокетами сервера.

    Имейте в виду, что заданный объект CArchive перемещает данные только в одном направлении. для загрузки (или получение) или сохранения (отправки). В некоторых случаях используется 2 объекта CArchive : одно для отправки данных, — для получения подтверждения.

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

  7. Удалите архив, файл сокета, объекты сокета.

    Примечание

    Предоставляет CArchive класса функцию-член IsBufferEmpty специально для использования с классом CSocket.Если буфер содержит несколько сообщений данных, например, необходимо воспроизвести до тех пор, пока все они не будут прочитаны и буфер.В противном случае в следующее уведомление о том, что данные, которые необходимо получить может быть задержано неопределенно.Используйте IsBufferEmpty, чтобы убедить, необходимо извлечь все данные.

На статью Сокеты Windows. Последовательность операций показано обе стороны этого процесса с примером кода.

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

См. также

Ссылки

CSocket::Create

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

Сокеты Windows в MFC