Сокеты Windows. Фон
В этой статье объясняется характер и назначение сокетов Windows. Статья также:
Описывает тип данных SOCKET- дескриптор данных.
Спецификация сокетов 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. Кроме того, см. следующие разделы: