Windows Sockets: Verwenden der Klasse CAsyncSocket
In diesem Artikel wird beschrieben, wie CAsyncSocket-Klasse verwendet.Beachten Sie, dass diese Klasse die Windows-Sockets API an einem sehr niedrigen kapselt.CAsyncSocket ist für Programmierer, die im Detail Netzwerkkommunikationen bekannt ist, jedoch verhindern möchte die Vereinfachung von Rückrufen für eine Benachrichtigung über Netzwerk Ereignissen.Auf Grundlage dieser Annahme setzt dieser Artikel nur grundlegende Anweisung fest.Sie sollten erwägen, wahrscheinlich CAsyncSocket zu verwenden, wenn Sie die einfache der Windows-Sockets des Beschäftigens mehrere Netzwerkprotokolle in einer MFC-Anwendung möchten, möchten jedoch nicht Flexibilität opfern.Sie können auch fühlten, dass Sie eine größere Effizienz abrufen können, indem Sie die direkte Kommunikation sich programmieren, als Sie können mit den allgemeineren alternativen Modell der Klasse CSocket.
CAsyncSocket wird in der MFC-Referenz dokumentiert.Der Visual C++ bietet außerdem die Windows Socket-Spezifikation, in Windows SDK.Die Details werden lassen.Visual C++ bietet keine Beispielanwendung für CAsyncSocket.
Wenn Sie nicht über Netzwerkkommunikationen dringend sachkundig sind und eine einfache Lösung möchten, verwenden Sie CSocket-Klasse mit einem CArchive-Objekt.Weitere Informationen finden Sie unter Windows-Sockets: Verwenden von Sockets mit Archiven.
In diesem Artikel wird:
Einem CAsyncSocket-Objekt.
Die Verantwortlichkeiten mit CAsyncSocket.
Einem Erstellen und Verwenden CAsyncSocket-Objekt
So verwenden CAsyncSocket
Erstellen Sie ein CAsyncSocket-Objekt, und verwenden Sie das Objekt, um das zugrunde liegende SOCKET Handle zu erstellen.
Erstellen eines Sockets folgt dem MFC-Muster der zweistufigen Konstruktion.
Beispiele:
CAsyncSocket sock; sock.Create( ); // Use the default parameters
- oder -
CAsyncSocket* pSocket = new CAsyncSocket; int nPort = 27; pSocket->Create( nPort, SOCK_DGRAM );
Der erste oben stehenden Konstruktor erstellt ein CAsyncSocket-Objekt auf dem Stapel.Der zweite Konstruktor erstellt CAsyncSocket auf dem Heap.Der erste Aufruf Erstellen oben verwendet die Standardparameter, um einen Streamsocket zu erstellen.Der zweite Create Aufruf erstellt einen Datagrammsocket mit einem angegebenen Anschluss und einer angegebenen Adresse.(Sie können jede Create-Version mit jedem Bauverfahren verwenden.)
Die Parameter für Create sind:
Ein ":" Anschluss eine kurze ganze Zahl.
Für einen Server socket müssen Sie einen Port angeben.Bei einem Client socket akzeptieren normalerweise den Standardwert für diesen Parameter, der Windows-Sockets einen Port auswählen können.
Ein Sockettyp: SOCK_STREAM (Standard) oder SOCK_DGRAM.
Ein Socket "Address "," How ftp.microsoft.com" oder "128.56.22.8".
Dies ist eine IP (Internet Protocol) - Adresse im Netzwerk.Erstellen Sie wahrscheinlich immer auf den Standardwert für diesen Parameter.
Die Begriffe "Anschluss" und "Socketadresse" werden in Windows-Sockets: Anschlüsse und Socket-Adressen erläutert.
Wenn der Socket ein Client ist, fügen Sie das Objekt socket Socket an einen Server mithilfe CAsyncSocket::Connect an.
- oder -
Wenn der Socket eines Servers ist, legen Sie für den Socket fest, um das Lauschen (mit CAsyncSocket::Listen herstellen zu starten) für Versuche von einem Client.Nach dem Empfang einer Verbindungsanforderung, übernehmen Sie sie mit CAsyncSocket::Accept.
Nachdem Sie eine Verbindung akzeptiert haben, können Sie diese Aufgaben wie Kennwörter, Überprüfung ausführen.
Hinweis Die Annehmen-Memberfunktion verwendet einen Verweis auf einen neuen, leeren CSocket-Objekt als Parameter.Sie müssen dieses Objekt erstellen, bevor Sie Annehmen aufrufen.Wenn dieser Socket Objekt den Gültigkeitsbereich verlässt, wird die Verbindung.Rufen Sie nicht Create für dieses neue Socket Objekt an.Ein Beispiel finden Sie im Artikel Windows-Sockets: Sequenz von Vorgängen.
Führen Sie die Kommunikation mit anderen Sockets, indem Sie die Memberfunktionen des CAsyncSocket-Objekts aufrufen, das die Windows Socket-API-Funktionen kapseln.
Windows-Sockets Informationen finden Sie in der Spezifikation CAsyncSocket-Klasse und in der MFC-Referenz.
Zerstören Sie das CAsyncSocket-Objekt.
Wenn Sie den Socket Objekt auf dem Stapel erstellt haben, wird der Destruktor aufgerufen, wenn die enthaltende Funktion den Gültigkeitsbereich verlässt.Wenn Sie den Socket Objekt auf dem Heap mithilfe des Operators new erstellt haben, sind Sie für die Verwendung des delet-Operators, um das Objekt zu zerstören verantwortlich.
Der Destruktor ruft die Verbinden-Memberfunktion des Objekts auf, bevor das Objekt zerstört.
Ein Beispiel für diese Sequenz in Code (tatsächlich für ein CSocket-Objekt) finden Sie Windows-Sockets: Sequenz von Vorgängen.
Die Verantwortlichkeiten mit CAsyncSocket
Wenn Sie ein Objekt der Klasse erstellen, CAsyncSocket das Objekt kapselt und stellt ein Handle Windows SOCKET Vorgänge für dieses Handle.Wenn Sie CAsyncSocket verwenden, müssen Sie alle Probleme behandeln, die möglicherweise gegenüberstellten, wenn Sie direkt die API.Beispiele:
Szenarien "blockierenden".
Bytereihenfolgen Unterschiede zwischen den sendenden und empfangenden Computern.
Zwischen Unicode und MBCS) (Multibyte-Zeichensatzes von Zeichenfolgen konvertiert.
Definitionen dieser Begriffe und der zusätzlichen Informationen finden Sie Windows-Sockets: Blockieren, Windows-Sockets: Bytereihenfolge, Windows-Sockets: Konvertieren von Zeichenfolgen.
Trotz dieser Klasse ist möglicherweise Probleme CAsycnSocket die richtige Wahl für Sie, wenn Ihre Anwendung auf die gesamte Flexibilität erfordert und Sie erhalten kann.Andernfalls sollten Sie stattdessen mithilfe der Klasse CSocket ansehen.CSocket blendet viele Details von Ihnen aus: Windows-Meldungen weiterleitet es während des Blockierens von Aufrufen und ermöglicht den Zugriff auf CArchive, der Unterschiede Bytereihenfolgen und Zeichenfolgenkonvertierung für Sie verwaltet.
Weitere Informationen finden Sie unter: