Сокеты Windows. Фон

В этой статье объясняется характер и назначение сокетов Windows. Статья также:

Спецификация сокетов Windows определяет интерфейс сетевого программирования, совместимый с двоичными файлами для Microsoft Windows. Сокеты Windows основаны на реализации сокетов UNIX в дистрибутиве программного обеспечения Berkeley (BSD, выпуск 4.3) из Калифорнийского университета в Беркли. Спецификация включает как подпрограммы сокетов в стиле BSD, так и расширения, относящиеся к Windows. Использование сокетов Windows позволяет приложению взаимодействовать в любой сети, соответствующей API сокетов Windows. В Win32 сокеты Windows обеспечивают безопасность потоков.

Многие поставщики сетевого программного обеспечения поддерживают сокеты Windows в соответствии с сетевыми протоколами, включая протоколы управления передачой и интернет-протокол (TCP/IP), сетевую систему Xerox (XNS), протокол DECNet корпорации digital Equipment, Exchange/Sequenced Packet Exchange (IPX/SPX) и другие. Хотя текущая спецификация сокетов Windows определяет абстракции сокетов для TCP/IP, любой сетевой протокол может соответствовать сокетам Windows, предоставив собственную версию библиотеки динамического канала (DLL), которая реализует сокеты Windows. Примеры коммерческих приложений, написанных с помощью сокетов Windows, включают X серверы Windows, эмуляторы терминалов и электронные почтовые системы.

Примечание.

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

Библиотека классов Microsoft Foundation (MFC) поддерживает программирование с помощью API сокетов Windows, предоставляя два класса. Один из этих классов CSocketпредоставляет высокий уровень абстракции для упрощения программирования сетевого взаимодействия.

Спецификация сокетов Windows, сокеты Windows: открытый интерфейс для сетевых вычислений в Microsoft Windows, теперь в версии 1.1, был разработан как открытый сетевой стандарт большой группы лиц и корпораций в сообществе TCP/IP и бесплатно доступен для использования. Модель программирования сокетов поддерживает один "домен связи" в настоящее время с помощью Набора протоколов Интернета. Спецификация доступна в пакете SDK для Windows.

Совет

Так как сокеты используют Набор протоколов Интернета, они являются предпочтительным маршрутом для приложений, поддерживающих обмен данными через Интернет на "информационном шоссе".

Определение сокета

Сокет — это конечная точка связи — объект, через который приложение сокетов Windows отправляет или получает пакеты данных в сети. Сокет имеет тип и связан с запущенным процессом, и он может иметь имя. В настоящее время сокеты обычно обмениваются данными только с другими сокетами в том же "домене связи", который использует Набор протоколов Интернета.

Оба типа сокетов являются двунаправленными; они представляют собой потоки данных, которые можно обмениваться данными в обоих направлениях одновременно (полно дуплексный).

Доступны два типа сокета:

  • Сокеты потоков

    Сокеты потоков предоставляют поток данных без границ записи: поток байтов. Потоки гарантированно доставляться и правильно выполнять последовательности и неупорядочения.

  • Сокеты датаграмм

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

"Последовательность" означает, что пакеты доставляются в порядке отправки. "Неуплицированный" означает, что вы получаете определенный пакет только один раз.

Примечание.

В некоторых сетевых протоколах, таких как XNS, потоки могут быть записаны в виде потоков записей, а не потоков байтов. Однако в соответствии с более распространенным протоколом TCP/IP потоки являются потоками байтов. Сокеты Windows обеспечивают уровень абстракции независимо от базового протокола.

Сведения об этих типах и типе сокетов, используемых в каких ситуациях, см. в разделе "Сокеты Windows": "Сокеты потоковой передачи" и "Сокеты Windows": сокеты datagram.

Тип данных SOCKET

Каждый объект сокета MFC инкапсулирует дескриптор в объект Сокетов Windows. Тип данных этого дескриптора — SOCKET. Дескриптор SOCKET аналогиен HWND окну. Классы сокета MFC предоставляют операции с инкапсулированным дескриптором.

Тип данных SOCKET подробно описан в пакете SDK для Windows. См. раздел "Тип данных сокета и значения ошибок" в сокетах Windows.

Используется для сокетов

Сокеты очень полезны по крайней мере в трех контекстах связи:

  • Модели клиента или сервера.

  • Одноранговые сценарии, такие как приложения обмена сообщениями.

  • Выполняя удаленные вызовы процедур (RPC), получая приложение интерпретирует сообщение как вызов функции.

Совет

Идеальным вариантом использования сокетов MFC является написание обоих окончаний взаимодействия: использование MFC в обоих концах. Дополнительные сведения об этом разделе, включая управление случаем при взаимодействии с приложениями, отличными от MFC, см. в разделе Сокеты Windows: Порядок байтов.

Дополнительные сведения см. в спецификации сокетов Windows: ntohs, ntohl, htons, htonl. Кроме того, см. следующие разделы:

См. также

Сокеты Windows в MFC