Windows Sockets: gniazda strumieniWindows Sockets: Stream Sockets

W tym artykule opisano gniazda strumienia, jeden z dwóch dostępnych typów gniazd systemu Windows.This article describes stream sockets, one of the two Windows Socket types available. (Drugi typ to gniazdo datagramu).(The other type is the datagram socket.)

Gniazda strumienia zapewniają przepływ danych bez granic rekordów: strumień bajtów, który może być dwukierunkowy (aplikacja jest pełna: może wysyłać i odbierać dane za pomocą gniazda).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). Strumienie mogą opierać się na dostarczaniu sekwencyjnych, niezduplikowanych danych.Streams can be relied upon to deliver sequenced, unduplicated data. ("Sekwencyjne" oznacza, że pakiety są dostarczane w wysłanej kolejności.("Sequenced" means that packets are delivered in the order sent. "Unduplikowane" oznacza, że otrzymujesz konkretny pakiet tylko raz.) Przesyłanie komunikatów strumieniowych jest gwarantowane, a strumienie są dobrze dopasowane do obsługi dużych ilości danych."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.

Warstwa transportu sieciowego może rozbić lub grupować dane w pakietach o rozsądnym rozmiarze.The network transport layer may break up or group data into packets of reasonable size. CSocketKlasa będzie obsługiwać pakowanie i rozpakowywanie.The CSocket class will handle the packing and unpacking for you.

Strumienie są oparte na jawnych połączeniach: gniazdo A żąda połączenia z gniazdem B; Gniazdo B akceptuje lub odrzuca żądanie połączenia.Streams are based on explicit connections: socket A requests a connection to socket B; socket B accepts or rejects the connection request.

Połączenie telefoniczne zapewnia dobrą analogową obsługę strumienia.A telephone call provides a good analogy for a stream. W normalnych warunkach Strona otrzymująca słyszy to, co powiedzieć, w kolejności, w jakiej zostało napisane, bez duplikowania ani utraty.Under normal circumstances, the receiving party hears what you say in the order that you say it, without duplication or loss. Gniazda strumienia są odpowiednie, na przykład w przypadku implementacji takich jak protokół transferu plików (FTP), które ułatwiają transferowanie plików ASCII lub binarnych o dowolnym rozmiarze.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.

Gniazda strumienia są preferowane w celu przechodzenia do gniazd, gdy dane muszą zostać dostarczone i gdy rozmiar danych jest duży.Stream sockets are preferable to datagram sockets when the data must be guaranteed to arrive and when data size is large. Aby uzyskać więcej informacji na temat gniazd strumienia, zobacz specyfikację Windows Sockets.For more information about stream sockets, see the Windows Sockets specification. Specyfikacja jest dostępna w Windows SDK.The specification is available in the Windows SDK.

Korzystanie z gniazd strumienia może być nadrzędne dla aplikacji zaprojektowanych do korzystania z gniazda datagramów do rozgłaszania do wszystkich gniazd otrzymujących w sieci, ponieważUsing stream sockets can be superior to applications designed to use a datagram socket for broadcasting to all receiving sockets on the network because

  • Model rozgłaszania podlega problemom z zalaniem sieci (lub "burzą").The broadcast model is subject to network flood (or "storm") problems.

  • Model klient-serwer został przyjęty w późniejszym czasie.The client-server model adopted subsequently is more efficient.

  • Model strumienia dostarcza niezawodnego transferu danych, gdzie model datagramu nie jest obsługiwany.The stream model supplies reliable data transfer, where the datagram model does not.

  • Ostatni model wykorzystuje możliwość komunikowania się między aplikacjami z gniazdami Unicode i ANSI, które Klasa CArchive przyjmuje do klasy CSocket.The final model takes advantage of the ability to communicate between Unicode and ANSI socket applications that class CArchive lends to class CSocket.

    Uwaga

    Jeśli używasz klasy CSocket , musisz użyć strumienia.If you use class CSocket, you must use a stream. Potwierdzenie MFC kończy się niepowodzeniem, jeśli typ gniazda zostanie określony jako SOCK_DGRAM.An MFC assertion fails if you specify the socket type as SOCK_DGRAM.

Zobacz teżSee also

Windows Sockets w MFCWindows Sockets in MFC
Windows Sockets: TłoWindows Sockets: Background