Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano gniazda strumieniowe — jeden z dwóch dostępnych typów gniazd Windows Sockets. (Innym typem jest gniazdo datagramu).
Gniazda strumieniowe zapewniają przepływ danych bez granic rekordów danych: strumień bajtów, który może być używany dwukierunkowo (aplikacja działa pełnym dupleksem: może zarówno przesyłać, jak i odbierać dane przez gniazdo). Strumienie można uznać za niezawodne w dostarczaniu sekwencjonowanych, niezduplikowanych danych. ("Sekwencjonowane" oznacza, że pakiety są dostarczane w kolejności wysyłania. "Niezduplikowane" oznacza, że określony pakiet otrzymujesz tylko raz). Odbiór wiadomości w strumieniu jest gwarantowany, a strumienie doskonale nadają się do obsługi dużych ilości danych.
Warstwa transportu sieciowego może podzielić lub zgrupować dane w pakietach o rozsądnym rozmiarze. Klasa CSocket będzie obsługiwać pakowanie i rozpakowywanie dla Ciebie.
Strumienie są oparte na jawnych połączeniach: gniazdo A żąda połączenia z gniazdem B; gniazdo B akceptuje lub odrzuca żądanie połączenia.
Połączenie telefoniczne zapewnia dobrą analogię do strumienia. W normalnych okolicznościach strona otrzymująca słyszy to, co mówisz w kolejności, w jakiej to mówisz, bez duplikowania lub utraty. Gniazda strumieniowe są odpowiednie, na przykład, dla implementacji takich jak protokół transferu plików (FTP), który ułatwia przesyłanie plików ASCII lub binarnych bez ograniczeń rozmiaru.
Gniazda strumieniowe są preferowane do gniazd datagramowych, gdy dane muszą być gwarantowane, że zostaną odebrane i gdy rozmiar danych jest duży. Aby uzyskać więcej informacji na temat gniazd strumieniowych, odnieś się do specyfikacji gniazd systemu Windows. Specyfikacja jest dostępna w zestawie Windows SDK.
Zastosowanie gniazd strumieniowych może być lepsze niż używanie aplikacji zaprojektowanych do nadawania za pomocą gniazda datagramu do wszystkich gniazd odbiorczych w sieci, ponieważ
Model emisji podlega problemom z powodzią sieci (lub "burzą").
Model klient-serwer przyjęty następnie jest bardziej wydajny.
Model strumienia zapewnia niezawodny transfer danych, czego nie robi model datagramu.
Finalny model korzysta z możliwości komunikacji między aplikacjami socketowymi Unicode i ANSI, którą klasa CArchive udostępnia klasie CSocket.
Uwaga / Notatka
Jeśli używasz klasy
CSocket, musisz użyć strumienia. Asercji MFC kończy się niepowodzeniem, jeśli określisz typ gniazda jako SOCK_DGRAM.
Zobacz także
Windows Sockets w MFC
Windows Sockets: w tle