Windows Sockets: gniazda strumieni
W tym artykule opisano gniazda strumienia, jedną z dwóch dostępnych typów Windows Socket. (Innego typu jest gniazdo datagramu.)
Stream sockets przewidują przepływ danych bez granic rekordów: strumień bajtów, które mogą być dwukierunkowy (aplikacja jest pełny dupleks: to może nadawać i odbierać za pośrednictwem gniazda).Strumienie mogą być powoływane do dostarczania danych sukcesywnych, unduplicated. ("Kolejne" oznacza, że pakiety są dostarczane w kolejności wysłane. "Unduplicated" oznacza się dany pakiet tylko raz). Gwarantowana komunikatach strumienia i strumieni dobrze nadają się do obsługi dużych ilości danych.
Warstwa transportu sieciowego może rozbić lub grupowania danych na pakiety odpowiednie rozmiary.CSocket Klasa będzie obsługiwać pakowania i rozpakowywania dla Ciebie.
Strumienie są oparte na jawne połączeń: gniazdo A żądania połączenia gniazda B; Gniazdo B akceptuje lub odrzuca żądanie połączenia.
Telefon zapewnia dobrą analogią dla strumienia.W normalnych warunkach Strona otrzymująca słyszy to, co mówisz w kolejności powiedzieć, bez powielania lub straty.Stream sockets są odpowiednie, na przykład w implementacji takich jak protokół FTP (File Transfer), który ułatwia przekazującej ASCII lub binarne pliki dowolnego rozmiaru.
Gniazda strumienia są zamiast datagram sockets, gdy dane musi zostać zagwarantowana przybyć i rozmiar danych jest duży.Aby uzyskać więcej informacji na temat gniazda strumienia Zobacz Specyfikacja usługi Windows Sockets.Specyfikacja jest dostępna w Windows SDK.
Korzystanie z gniazda strumienia może być nadrzędne w stosunku do aplikacje zaprojektowane w celu wykorzystania gniazdo datagramu do emisji wszystkich odbierający gniazdami w sieci, ponieważ
Model emisji podlega problemy z siecią powodzi (lub "Burza").
Późniejsze modelu klient serwer jest bardziej efektywne.
Model strumień dostaw niezawodny transfer danych, gdzie model datagramu nie obsługuje.
Ostatecznego modelu wykorzystuje możliwość komunikowania się między Unicode i ANSI gniazdo aplikacje tej klasy CArchive nadaje się do klasy CSocketFile, CSocket.
[!UWAGA]
Korzystając z klasy CSocket, należy użyć strumienia.Podanie MFC nie powiedzie się, jeśli określony typ gniazda jako SOCK_DGRAM.