Udostępnij za pośrednictwem


Używanie wielu protokołów

Aplikacja używa funkcji WSAEnumProtocols, aby określić, które protokoły transportowe i łańcuchy protokołów są obecne, oraz uzyskać informacje o każdym z nich, które znajdują się w skojarzonej strukturze WSAPROTOCOL_INFO.

W większości przypadków istnieje jedna struktura WSAPROTOCOL_INFO dla każdego protokołu lub łańcucha protokołów. Jednak niektóre protokoły wykazują wiele zachowań. Na przykład protokół SPX jest zorientowany na komunikaty (czyli granice komunikatów nadawcy są zachowywane przez sieć), ale gniazdo odbierające może ignorować te granice komunikatów i traktować je jako strumień bajtowy. W związku z tym dwa różne wpisy struktury WSAPROTOCOL_INFO mogą istnieć dla SPX — jeden dla każdego zachowania.

W systemie Windows Sockets 2 pojawia się kilka nowych wartości rodziny adresów, typu gniazda i protokołu. System Windows Sockets 1.1 obsługiwał jedną rodzinę adresów (AF_INET) dla protokołu IPv4, która składała się z niewielkiej liczby dobrze znanych typów gniazd i identyfikatorów protokołów. System Windows Sockets 2 zachowuje istniejącą rodzinę adresów, typ gniazda i identyfikatory protokołu ze względów zgodności, ale obsługuje również nowe wartości rodziny adresów dla nowych protokołów transportowych z nowymi typami multimediów.

Nowe, unikatowe identyfikatory nie muszą być dobrze znane, ale nie powinno to stanowić problemu. Aplikacje, które muszą być niezależne od protokołu, są zachęcane do wybierania protokołu na podstawie jego przydatności, a nie wartości przypisanych do ich socket_type lub parametrów protokołu. Dopasowanie protokołu jest wskazywane przez atrybuty komunikacji, takie jak strumień komunikatów kontra strumień bajtów i niezawodność kontra zawodność, które znajdują się w strukturze protokołu WSAPROTOCOL_INFO. Wybór protokołów na podstawie przydatności, w przeciwieństwie do dobrze znanych nazw protokołów i typów gniazd pozwala aplikacjom niezależnym od protokołu korzystać z nowych protokołów transportowych i skojarzonych typów nośników, gdy staną się dostępne.

Część serwerowa aplikacji klient/serwer odnosi korzyści z ustanowienia gniazd nasłuchujących we wszystkich odpowiednich protokołach transportowych. Następnie klient może nawiązać połączenie przy użyciu dowolnego odpowiedniego protokołu. Na przykład pozwoliłoby to aplikacji klienckiej na niezmodyfikowanie tego, czy była uruchomiona w systemie stacjonarnym podłączonym za pośrednictwem sieci LAN, czy na laptopie przy użyciu sieci bezprzewodowej.