Windows Sockets: podstawy
W tym artykule wyjaśniono charakter i przeznaczenie gniazd systemu Windows. Artykuł zawiera również następujące elementy:
Opisuje typ danych dojścia gniazda.
Specyfikacja windows Sockets definiuje binarny interfejs programowania sieciowego dla systemu Microsoft Windows. Windows Sockets są oparte na implementacji gniazd system UNIX w Berkeley Software Distribution (BSD, release 4.3) z University of California w Berkeley. Specyfikacja zawiera zarówno procedury gniazd typu BSD, jak i rozszerzenia specyficzne dla systemu Windows. Użycie interfejsu Windows Sockets umożliwia aplikacji komunikowanie się z dowolną siecią zgodną z interfejsem API windows Sockets. W systemie Win32 gniazda systemu Windows zapewniają bezpieczeństwo wątków.
Wielu dostawców oprogramowania sieciowego obsługuje gniazda systemu Windows w ramach protokołów sieciowych, w tym transmission control protocol/Internet Protocol (TCP/IP), Sieć SieciOwa (XNS), protokół DECNet firmy Digital Equipment Corporation, Internet Packet Exchange/Sequenced Packed Exchange (IPX/SPX) i inne. Chociaż obecna specyfikacja gniazd systemu Windows definiuje abstrakcję gniazd dla protokołu TCP/IP, każdy protokół sieciowy może być zgodny z gniazdami Systemu Windows, podając własną wersję biblioteki łącza dynamicznego (DLL), która implementuje gniazda systemu Windows. Przykłady aplikacji komercyjnych napisanych za pomocą gniazd systemu Windows obejmują serwery X, emulatory terminali i systemy poczty elektronicznej.
Uwaga
Celem gniazd systemu Windows jest abstrakcja podstawowej sieci, dzięki czemu nie trzeba mieć wiedzy na temat tej sieci, aby aplikacja mogła działać w dowolnej sieci obsługującej gniazda. W związku z tym ta dokumentacja nie omawia szczegółów protokołów sieciowych.
Biblioteka klas programu Microsoft Foundation (MFC) obsługuje programowanie za pomocą interfejsu API Windows Sockets, dostarczając dwie klasy. Jedna z tych klas, CSocket
, zapewnia wysoki poziom abstrakcji, aby uprościć programowanie komunikacji sieciowej.
Specyfikacja Windows Sockets, Windows Sockets: Open Interface for Network Computing Under Microsoft Windows, teraz w wersji 1.1, została opracowana jako otwarty standard sieciowy przez dużą grupę osób i korporacji w społeczności TCP/IP i jest bezpłatnie dostępna do użytku. Model programowania gniazd obsługuje obecnie jedną "domenę komunikacji" przy użyciu pakietu protokołów internetowych. Specyfikacja jest dostępna w zestawie Windows SDK.
Napiwek
Ponieważ gniazda korzystają z pakietu protokołów internetowych, są preferowaną trasą dla aplikacji obsługujących komunikację internetową na "autostradzie informacyjnej".
Definicja gniazda
Gniazdo to punkt końcowy komunikacji — obiekt, za pośrednictwem którego aplikacja Windows Sockets wysyła lub odbiera pakiety danych w sieci. Gniazdo ma typ i jest skojarzone z uruchomionym procesem i może mieć nazwę. Obecnie gniazda zwykle wymieniają dane tylko z innymi gniazdami w tej samej "domenie komunikacji", która używa pakietu protokołów internetowych.
Oba rodzaje gniazd są dwukierunkowe; są przepływami danych, które mogą być przekazywane w obu kierunkach jednocześnie (pełnodupleksowy).
Dostępne są dwa typy gniazd:
gniazda strumieni
Gniazda strumieni zapewniają przepływ danych bez granic rekordów: strumień bajtów. Strumienie mają gwarancję dostarczenia i poprawnego sekwencjonowania i unduplikacji.
gniazda do przesyłania datagramów
Gniazda datagramu obsługują przepływ danych zorientowany na rekord, który nie jest gwarantowany do dostarczenia i może nie być sekwencjonowany jako wysyłany lub nie jest cofany.
"Sekwencjonowany" oznacza, że pakiety są dostarczane w kolejności wysyłanej. "Unduplicated" oznacza, że otrzymasz określony pakiet tylko raz.
Uwaga
W ramach niektórych protokołów sieciowych, takich jak XNS, strumienie mogą być zorientowane na rekordy, jako strumienie rekordów, a nie strumienie bajtów. Jednak w przypadku bardziej typowego protokołu TCP/IP strumienie są strumieniami bajtów. Windows Sockets zapewnia poziom abstrakcji niezależnie od podstawowego protokołu.
Aby uzyskać informacje o tych typach i jakiego rodzaju gniazda do użycia w jakich sytuacjach, zobacz Windows Sockets: Stream Sockets i Windows Sockets: Datagram Sockets.
Typ danych GNIAZDA
Każdy obiekt gniazda MFC hermetyzuje uchwyt do obiektu Windows Sockets. Typ danych tego uchwytu to SOCKET. Uchwyt GNIAZDA jest analogiczny do HWND
okna. Klasy gniazd MFC zapewniają operacje na hermetyzowanym dojściu.
Typ danych SOCKET został szczegółowo opisany w zestawie Windows SDK. Zobacz "Typ danych gniazda i wartości błędów" w obszarze Gniazda systemu Windows.
Zastosowania dla gniazd
Gniazda są bardzo przydatne w co najmniej trzech kontekstach komunikacji:
Modele klienta/serwera.
Scenariusze komunikacji równorzędnej, takie jak aplikacje do obsługi komunikatów.
Wykonywanie zdalnych wywołań procedur (RPC) przez interpretowanie komunikatu przez odbieranie komunikatu jako wywołania funkcji.
Napiwek
Idealny przypadek użycia gniazd MFC polega na pisaniu obu końców komunikacji: przy użyciu MFC na obu końcach. Aby uzyskać więcej informacji na ten temat, w tym sposób zarządzania przypadkiem podczas komunikacji z aplikacjami innych niż MFC, zobacz Windows Sockets: Byte Ordering (Gniazda systemu Windows: kolejność bajtów).
Aby uzyskać więcej informacji, zobacz Windows Sockets Specification: ntohs, ntohl, htons, htonl. Zapoznaj się również z następującymi tematami: