Сокеты Windows. Сокеты потоковWindows Sockets: Stream Sockets

В этой статье описываются сокеты потоков, один из двух доступных типов сокетов Windows.This article describes stream sockets, one of the two Windows Socket types available. (Другой тип — сокет датаграммы.)(The other type is the datagram socket.)

Сокеты потоков обеспечивают поток данных без границ записи: поток байтов, который может быть двунаправленным (приложение полностью дуплексно: оно может передавать и получать данные через сокет).Stream sockets provide for a data flow without record boundaries: a stream of bytes that can be bidirectional (the application is full duplex: it can both transmit and receive through the socket). Потоки могут полагаться на то, чтобы доставлять виртуализированные недублированные данные.Streams can be relied upon to deliver sequenced, unduplicated data. ("Виртуализированный" означает, что пакеты доставляются в отправленном порядке.("Sequenced" means that packets are delivered in the order sent. "Недублированный" означает, что вы получаете определенный пакет только один раз.) Получение потоковых сообщений гарантировано, а потоки хорошо подходят для обработки больших объемов данных."Unduplicated" means that you get a particular packet only once.) Receipt of stream messages is guaranteed, and streams are well suited to handling large amounts of data.

Транспортный уровень сети может разбивать или группировать данные в пакеты разумного размера.The network transport layer may break up or group data into packets of reasonable size. CSocketКласс будет выполнять упаковку и распаковку.The CSocket class will handle the packing and unpacking for you.

Потоки основываются на явных соединениях: сокет A запрашивает подключение к сокету B; сокет B принимает или отклоняет запрос на подключение.Streams are based on explicit connections: socket A requests a connection to socket B; socket B accepts or rejects the connection request.

Телефонный звонок обеспечивает хорошую аналогию для потока.A telephone call provides a good analogy for a stream. При нормальных обстоятельствах принимающая сторона слышит то, что вы говорите в том порядке, в котором вы говорите, без дублирования или потери.Under normal circumstances, the receiving party hears what you say in the order that you say it, without duplication or loss. Сокеты потоков подходят, например, для таких реализаций, как протокол FTP (FTP), что упрощает передачу ASCII-или двоичных файлов произвольного размера.Stream sockets are appropriate, for example, for implementations such as the File Transfer Protocol (FTP), which facilitates transferring ASCII or binary files of arbitrary size.

Сокеты потоков предпочтительнее сокетов датаграмм, когда данные должны быть гарантированно получены, а размер данных — большим.Stream sockets are preferable to datagram sockets when the data must be guaranteed to arrive and when data size is large. Дополнительные сведения о сокетах потоков см. в описании спецификации сокетов Windows.For more information about stream sockets, see the Windows Sockets specification. Спецификация доступна в Windows SDK.The specification is available in the Windows SDK.

Использование сокетов потоков может быть главным для приложений, предназначенных для использования сокета датаграмм для вещания всех принимаемых сокетов в сети, так какUsing stream sockets can be superior to applications designed to use a datagram socket for broadcasting to all receiving sockets on the network because

  • В модели вещания распространяются проблемы переполнения сети (или "интенсивности").The broadcast model is subject to network flood (or "storm") problems.

  • Модель "клиент-сервер" в дальнейшем является более эффективной.The client-server model adopted subsequently is more efficient.

  • Модель потока обеспечивает надежную передачу данных, в которой отсутствует модель датаграммы.The stream model supplies reliable data transfer, where the datagram model does not.

  • Последняя модель использует преимущества возможности взаимодействия между приложениями в Юникоде и ANSI Socket, которые класс CArchive предоставляет классу CSocket.The final model takes advantage of the ability to communicate between Unicode and ANSI socket applications that class CArchive lends to class CSocket.

    Примечание

    При использовании класса CSocket необходимо использовать поток.If you use class CSocket, you must use a stream. Утверждение MFC завершается ошибкой, если указать тип сокета как SOCK_DGRAM.An MFC assertion fails if you specify the socket type as SOCK_DGRAM.

См. также разделSee also

Сокеты Windows в MFCWindows Sockets in MFC
Сокеты Windows. ФонWindows Sockets: Background