Windows Sockets: Verwenden der CAsyncSocket-Klasse
In diesem Artikel wird beschrieben, wie CAsyncSocket- Klasse verwendet. Beachten Sie, dass diese Klasse die Windows Sockets API zu einem sehr wenig kapselt. CAsyncSocket ist für Programmierer, die Netzwerkkommunikationen ausführlich kennen, jedoch keine die Hilfe der Rückrufe für eine Benachrichtigung über Netzwerkereignissen. Auf Grundlage diese Annahme legt dieser Artikel nur grundlegende Anweisung fest. Sie sollten CAsyncSocket zu verwenden, wahrscheinlich, sollten, wenn Sie die einfache der Windows Sockets des Beschäftigens mehrere Netzwerkprotokolle in einer MFC-Anwendung möchten, möchten aber nicht Flexibilität opfern. Sie sicher fühlten auch, dass Sie eine höhere Effizienz abrufen können, indem Sie direkt die Kommunikation sich programmieren, als Sie können mit den allgemeineren alternativen Modell der Klasse CSocket.
CAsyncSocket wird in der MFC-Referenz dokumentiert. Visual C++ bietet auch die Windows Socket-Spezifikation, in Windows SDK. Die Details werden Ihnen überlassen. Visual C++ bietet keine Beispielanwendung für CAsyncSocket.
Wenn Sie nicht über Netzwerkkommunikationen hoch sind und sich eine einfache Lösung möchten, Verwendungsklasse CSocket mit einem CArchive-Objekt. Weitere Informationen finden Sie unter Windows Sockets: Verwenden der Archiven Sockets mit.
Dieser Artikel werden ab:
Ein CAsyncSocket-Objekt erstellen und mit.
die Verantwortung mit CAsyncSocket.
Hinzufügen eines CAsyncSocket-Objekt erstellen und mit
So CAsyncSocket verwenden
Erstellen Sie ein CAsyncSocket-Objekt und verwenden Sie das Objekt, um das zugrunde liegende SOCKET Handle zu erstellen.
Erstellung eines Sockets folgt dem MFC-Muster der zweistufigen Konstruktion.
Beispiel:
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 für den Heap. Der erste Erstellen Aufruf oben verwendet die Standardparameter, um einen Streamsocket zu erstellen. Der zweite Aufruf Erstellen erstellt einen Datagrammsocket mit einem angegebenen Anschluss und eine Adresse. (Sie können jede Erstellen-Version mit jedem Bauverfahren verwenden.)
Die Parameter an Erstellen sind:
Ein Port": " eine kurze ganze Zahl.
Für einen Serversocket müssen Sie einen Port angeben. Für einen Clientsocket Übernehmen Sie in der Regel den Standardwert für diesen Parameter, der Windows Sockets einen Port auswählen können.
Ein Sockettyp: SOCK_STREAM (Standardwert) oder SOCK_DGRAM.
Ein Socket "Address," z "ftp.microsoft.com" oder "128.56.22.8".
Dies ist die Internetprotokoll (ip)- Adresse im Netzwerk. Erstellen Sie wahrscheinlich immer auf den Standardwert für diesen Parameter.
Die Begriffe "Port" und "Socketadresse" werden in Windows Sockets: Anschlüsse und Socket-Adressen erläutert.
Wenn der Client ein Socket ist, schließen Sie das Socketobjekt zu einem Serversocket, mit CAsyncSocket::Connect an.
- oder -
Wenn der Socket ein Server ist, legen Sie den Socket fest, um Lauschen (mit CAsyncSocket::Listen) für zu starten herstellen Versuche von einem Client. Bei Empfang einer Aufforderung zum Aufbau einer Verbindung, akzeptieren Sie sie mit dem CAsyncSocket::Accept.
Nachdem Sie eine Verbindung akzeptiert haben, können Sie diese Aufgaben wie Kennwörter, Überprüfung durchführen.
Hinweis
Die Annehmen-Memberfunktion übernimmt einen Verweis in einem neuen, leeren CSocket-Objekt als Parameter.Sie müssen dieses Objekt erstellen, bevor Sie Annehmen aufrufen.Wenn dieses Socketobjekt den Bereich verlässt, wird die Verbindung.Rufen Sie Erstellen nicht für dieses neue Socketobjekt auf.Ein Beispiel finden Sie im Artikel Windows Sockets: Sequenz von Vorgängen.
Führen Sie Kommunikation mit anderen Sockets durch, indem Sie die Memberfunktionen CAsyncSocket des Objekts aufrufen, die die Windows Socket-API-Funktionen kapseln.
Siehe die Windows Sockets Spezifikation und CAsyncSocket in der MFC-Referenz.
Zerstören Sie das CAsyncSocket-Objekt.
Wenn Sie das Socketobjekt auf dem Stapel erstellt haben, wird ihr Destruktor aufgerufen, wenn die enthaltende Funktion den Bereich verlässt. Wenn Sie das Socketobjekt im Heap, mithilfe des Operators neu erstellt haben, sind Sie für die Anwendung des Operators löschen, um das Objekt zu zerstören zuständig.
Der Destruktor ruft die Schließen-Memberfunktion des Objekts auf, bevor das Objekt zerstört.
Ein Beispiel für diese Sequenz im Code (tatsächlich für CSocket-Objekt), finden Sie unter Windows Sockets: Sequenz von Vorgängen.
die Verantwortung mit CAsyncSocket
Wenn Sie ein Objekt der Klasse CAsyncSocket erstellen, enthält das Objekt ein Handle von SOCKET und stellt Vorgänge auf dieses Handle. Wenn Sie CAsyncSocket verwenden, müssen Sie alle Probleme behandeln, die möglicherweise gegenüberstellten, wenn Sie entweder direkt die API verwenden. Beispiel:
Szenarien "Blockierung".
Bytereihenfolgenunterschiede zwischen den sendenden empfangenden und Computern.
Konvertieren zwischen Unicode und Zeichenfolgen Mehrbyte-Zeichensätze (MBCS).
Definitionen dieser Begriffe sowie weitere Informationen, finden Sie unter Windows Sockets: Blockieren, Windows Sockets: Bytereihenfolge, Windows Sockets: Konvertieren von Zeichenfolgen.
Trotz dieser Probleme ist möglicherweise Klasse CAsycnSocket die richtige Wahl für Sie, wenn die Anwendung die ganze Flexibilität erfordert und steuern können Sie abrufen. Wenn nicht, sollten Sie Klasse, stattdessen CSocket zu empfehlen. CSocket blendet viele Details von Ihnen aus: Windows-Meldungen weiterleitet es während des Blockierens von Aufrufen und gibt Ihnen Zugriff auf CArchive, der Bytereihenfolgenunterschiede und Zeichenfolgenkonvertierung für Sie verwaltet.
Weitere Informationen finden Sie unter: