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


Общие сведения о сокетах 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 Corporation, протоколы Интернет-пакетной/последовательной пакетной передачи корпорации Novell (IPX/SPX) и другие. Хотя текущая спецификация сокетов Windows определяет абстракции сокетов для TCP/IP, любой сетевой протокол может соответствовать сокетам Windows, предоставив собственную версию библиотеки динамического канала (DLL), которая реализует сокеты Windows. Примеры коммерческих приложений, написанных с помощью сокетов Windows, включают X серверы Windows, эмуляторы терминалов и электронные почтовые системы.

Замечание

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

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

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

Подсказка

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

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

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

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

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

  • Потоковые сокеты

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

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

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

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

Замечание

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

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

Тип данных SOCKET

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

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

Применение сокетов

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

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

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

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

Подсказка

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

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

См. также

Сокеты Windows в MFC