Udostępnij za pośrednictwem


Windows Sockets: Za pomocą klasy CAsyncSocket

W tym artykule wyjaśniono, jak używać klasy CAsyncSocket.Należy pamiętać, że ta klasa obejmuje Windows Sockets API na bardzo niskim poziomie.CAsyncSocketjest do użytku przez programistów, którzy znasz komunikacji sieciowej szczegółowo, ale chcesz wygody wywołania zwrotne dla powiadomień o zdarzeniach w sieci.Na podstawie tego założenia, ten artykuł zawiera tylko podstawowe instrukcje.Prawdopodobnie należy rozważyć użycie CAsyncSocket był łatwość Windows Sockets zajmowanie się wiele protokołów sieciowych w aplikacji MFC, ale nie chcesz Rezygnacja z elastyczności.Może być również wrażenie, że można uzyskać lepszą wydajność programowania więcej komunikację bezpośrednio samodzielnie niż użytkownik może za pomocą bardziej ogólny model alternatywny klasy CSocket.

CAsyncSocketw Odniesienia MFC.Visual C++ dostarcza również specyfikacji Windows Sockets, znajdujące się w Windows SDK.Szczegóły są pozostawione do Ciebie.Visual C++ nie dostarcza przykładowej aplikacji na CAsyncSocket.

Jeśli nie są wysoce odpowiednią wiedzę na temat sieci łączności i mają proste rozwiązanie, należy użyć klasy CSocket z CArchive obiektu.Zobacz Windows Sockets: za pomocą gniazd z archiwami Aby uzyskać więcej informacji.

W tym artykule omówiono następujące tematy:

  • Tworzenie i używanie CAsyncSocket obiektu.

  • Zadania z CAsyncSocket.

Tworzenie i używanie obiektów CAsyncSocket

Aby użyć CAsyncSocket

  1. Konstruowanie CAsyncSocket object i obiekt jest używany do tworzenia podstawowej GNIAZDO obsługi.

    Tworzenie gniazda następuje deseń 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 );                    
    

    Tworzy konstruktora pierwszy powyżej CAsyncSocket obiektów na stosie.Tworzy drugie konstruktora CAsyncSocket na stercie.Pierwszy Tworzenie wywołanie powyżej używa domyślnych parametrów utworzyć gniazda strumienia.Drugi Tworzenie wywołanie tworzy gniazdo datagramu z określonego portu i adresu.(Można użyć albo Tworzenie wersji z jednej metody budowlanej.)

    Parametry Tworzenie 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 Windows Sockets, wybierz port.

    • Typ gniazda: SOCK_STREAM (domyślnie) lub SOCK_DGRAM.

    • Gniazdo "adres" przykład "ftp.microsoft.com" lub "128.56.22.8".

      Jest to adres Internet Protocol (IP) w sieci.Będzie prawdopodobnie zawsze opierać się na wartości domyślne dla tego parametru.

    Terminy "port" i "adres gniazda" są wyjaśnione w Windows Sockets: portów i adresów gniazdo.

  2. Gniazdo jest klientem, łączenie obiektu gniazda z serwerem socket, za pomocą CAsyncSocket::Connect.

    - lub -

    Gniazdo jest serwerem, ustawić gniazda, aby rozpocząć nasłuch (z CAsyncSocket::Listen) dla prób połączenia przez klienta.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 Członkowskich funkcja ma odniesienie do nowy, pusty CSocket obiekt jako parametr.Należy tworzyć ten obiekt przed wywołaniem Zaakceptuj.Jeśli ten obiekt gniazda wykracza poza zakres, zamyka połączenie.Nie wywołuj Tworzenie dla tego nowego obiektu gniazda.Na przykład, zobacz artykuł Windows Sockets: Sekwencja operacji.

  3. Przeprowadzenia komunikację z innymi sockets przez wywołanie CAsyncSocket funkcji elementów członkowskich obiektu hermetyzujące funkcje interfejsu API programu Windows Sockets.

    Zobacz specyfikację Windows Sockets i klasy CAsyncSocket w Odniesienia MFC.

  4. Zniszczenie CAsyncSocket obiektu.

    Jeśli utworzono obiekt gniazda na stosie, jego destruktora jest wywoływane, gdy funkcja zawierające wykracza poza zakres.Utworzono obiekt gniazda na stercie, za pomocą Nowy operatora, jest odpowiedzialny za pomocą usunąć operator zniszczenie obiektu.

    Destruktor wywołuje obiekt Zamknij funkcji składowej przed zniszczenie obiektu.

Na przykład w tej sekwencji w kodzie (faktycznie dla CSocket obiektu), zobacz Windows Sockets: Sekwencja operacji.

Zadania z CAsyncSocket

Podczas tworzenia obiektu klasy CAsyncSocket, obiekt hermetyzuje Windows GNIAZDO uchwyt i zaopatrzenia operacji na tym uchwycie.Kiedy używać CAsyncSocket, muszą dotyczyć wszystkich problemów, które mogą być nałożone, jeżeli bezpośrednio za pomocą interfejsu API.Na przykład:

  • "Blokada" scenariuszy.

  • Bajt zamówienia różnice między nadawczy i odbiorczy maszyny.

  • Konwersja między Unicode i znaków wielobajtowych ustawianie ciągów (MBCS).

Definicje tych terminów i dodatkowe informacje, zobacz Windows Sockets: blokowanie, Windows Sockets: kolejność bajtów, Windows Sockets: Konwertowanie ciągów.

Pomimo tych kwestii klasy CAsycnSocket może być właściwy wybór dla Ciebie, jeśli aplikacja wymaga elastyczność i kontrolę, można uzyskać.Jeśli nie, należy rozważyć użycie klasy CSocket zamiast.CSocketukrywa wiele szczegółów od Ciebie: on pompy komunikatów systemu Windows podczas blokowania połączeń i daje dostęp do CArchive, który zarządza różnice kolejność bajtów i konwersja string.

Aby uzyskać więcej informacji zobacz:

Zobacz też

Koncepcje

Windows Sockets w MFC