Windows Sockets: używanie klasy CAsyncSocket
W tym artykule wyjaśniono, jak używać klasy CAsyncSocket.Należy pamiętać, że ta klasa hermetyzuje interfejsu API Windows Sockets na bardzo niskim poziomie.CAsyncSocketjest przeznaczona dla programistów, którzy znają komunikacji sieciowej szczegółowo, ale chcą wygody wywołań zwrotnych dla powiadomień o zdarzeniach w sieci.W oparciu o to założenie, w tym artykule zawiera tylko podstawowe instrukcje.Prawdopodobnie należy rozważyć użycie CAsyncSocket Jeśli chcesz Windows Sockets łatwość radzenia sobie z wielu protokołów sieciowych w aplikacji MFC, ale nie chcesz poświęcić elastyczność.Mogą również uznać, że można osiągnąć lepszą wydajność przy programowanie więcej komunikację bezpośrednio na sobie niż użytkownik może za pomocą bardziej ogólny model alternatywny klasy CSocket.
CAsyncSocketjest udokumentowana w Odwołanie MFC.Visual C++ dostarcza również Specyfikacja usługi Windows Sockets, znajdujące się w Windows SDK.Szczegóły są pozostawiane do Ciebie.Visual C++ nie dostarcza przykładowej aplikacji dla CAsyncSocket.
Jeśli nie są wysoce wiedzę na temat komunikacji sieciowej i proste rozwiązanie, należy użyć klasy CSocketFile, CSocket z CArchive obiektu.Zobacz Windows Sockets: przy użyciu gniazd z archiwum uzyskać więcej informacji.
W tym artykule omówiono następujące tematy:
Tworzenie i używanie CAsyncSocket obiektu.
Swoje obowiązki z CAsyncSocket.
Tworzenie i używanie obiektu CAsyncSocket
Aby użyć CAsyncSocket
Budowy CAsyncSocket obiektu i obiekt jest używany do tworzenia bazowego GNIAZDO obsługi.
Tworzenie gniazda zgodny ze wzorcem MFC dwa etapy budowy.
Na przykład:
CAsyncSocket sock; sock.Create( ); // Use the default parameters
-lub-
CAsyncSocket* pSocket = new CAsyncSocket; int nPort = 27; pSocket->Create( nPort, SOCK_DGRAM );
Konstruktor pierwszego powyżej tworzy CAsyncSocket obiektów na stosie.Drugi Konstruktor tworzy CAsyncSocket na stercie.Pierwszy Create wezwanie powyżej korzysta z domyślnych parametrów utworzyć gniazda strumienia.Drugi Create wywołanie tworzy gniazdo datagramu z określonego portu i adresu. (Można użyć Create wersja z jednej z metod budowy.)
Parametry Create są:
"port": krótka liczba całkowita.
Dla gniazda serwera należy określić port.Dla gniazdo klienta zazwyczaj zaakceptować wartość domyślną dla tego parametru, który pozwala wybrać port usługi Windows Sockets.
Typ gniazda: SOCK_STREAM (ustawienie domyślne) lub SOCK_DGRAM.
Gniazdo "adres" przykład "ftp.microsoft.com" lub "128.56.22.8".
To jest Twój adres Internet Protocol (IP) w sieci.Wartością domyślną tego parametru prawdopodobnie zawsze będzie zależeć.
Terminy "Porto" i "adres gniazda" są wyjaśnione w Windows Sockets: portów i adresów gniazd.
Jeśli gniazdo jest klientem, gniazda obiektu nawiązania połączenia z serwerem gniazda, za pomocą CAsyncSocket::Connect.
-lub-
Jeśli gniazdo jest serwerem, zestaw gniazd, aby rozpocząć nasłuch (z CAsyncSocket::Listen) dla prób połączenia z klientem.Po odebraniu żądania połączenia, zaakceptuj ją z CAsyncSocket::Accept.
Po zaakceptowaniu połączenia, można wykonywać zadania, takie jak sprawdzanie poprawności hasła.
[!UWAGA]
Zaakceptuj funkcji składowej ma odniesienie do nowy, pusty CSocket obiekt jako parametr.Należy tworzyć ten obiekt przed wywołaniem Zaakceptuj.Jeśli ten obiekt socket wykracza poza zakres, zamyka połączenie.Nie wywołuj Create dla tego nowego obiektu gniazda.Na przykład, zobacz artykuł Windows Sockets: Sekwencja operacji.
Przeprowadzić komunikację z innymi sockets przez wywołanie CAsyncSocket funkcje składowe obiektu hermetyzujące funkcje interfejsu API Windows Sockets.
Zobacz specyfikację usługi Windows Sockets i klasy CAsyncSocket w Odwołanie MFC.
Zniszczyć CAsyncSocket obiektu.
Jeśli utworzono obiekt gniazda na stosie, jego destruktora jest wywoływane, gdy funkcja zawierające wykracza poza zakres.Jeśli utworzono obiekt gniazda na stercie, za pomocą Nowy operatora, jesteś odpowiedzialny za pomocą usunąć operatora do niszczenia obiektu.
Destruktor wywołuje obiekt Zamknij funkcji składowej przed zniszczeniem obiektu.
Na przykład ta sekwencja w kodzie (faktycznie dla CSocket obiektu), zobacz Windows Sockets: Sekwencja operacji.
Swoje obowiązki z CAsyncSocket
Podczas tworzenia obiektu klasy CAsyncSocket, obiekt hermetyzuje systemu Windows GNIAZDO obsługi i dostarcza operacje na tym uchwycie.Użycie CAsyncSocket, musi zajmować wszystkich problemów można twarz Jeśli bezpośrednio za pomocą interfejsu API.Na przykład:
"Blokowanie" scenariuszy.
Bajt zamówienia różnice między nadawczy i odbiorczy maszyny.
Konwersja między Unicode i znaków wielobajtowych zestaw ciągów (MBCS).
Aby uzyskać definicje tych terminów i dodatkowe informacje, zobacz Windows Sockets: blokowanie, Windows Sockets: bajtów to, Windows Sockets: Konwertowanie ciągów.
Pomimo tych problemów klasy CAsycnSocket może być właściwym wyborem dla Ciebie, jeśli aplikacja wymaga wszystkich elastyczność i kontrolę można uzyskać.Jeśli nie, należy rozważyć użycie klasy CSocket w zamian.CSocketukrywa wiele szczegółów od Ciebie: it pompy okna komunikatów podczas blokowania połączeń i daje dostęp do CArchive, która zarządza różnice kolejność bajtów i konwersji ciągów dla Ciebie.
Aby uzyskać więcej informacji, zobacz: