Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Servus,

könnet mir, einem blutigen Socketanfänger, jemand in knappen Worten den

Unterschied zwischen CSocket und CAsyncSocket erklären. Ich lesen schon eine

ganze Weile über dieses Thema, habe aber bisher nichts gefunden, was mir

sagen könnte "wenn du dieses machen willst, dann nimm diese oder jene Klasse."

Ich habe in diesem Artikel gelesen, dass CSocket automatisch in einem eigenen

Thread läuft. Trifft das auch auf CAsyncSocket zu.

Ciao TinTin

PS:

Ach ja, und ich möchte euch bitten von Diskussionen Pro und Contra MFC

Abstand zu nehmen.

Geschrieben

Die Aufrufe von CAsyncSocket sind eben asynchron, d.h. sie blockieren den Aufrufer nicht. Das heißt aber auch, dass die Aufrufe meistens zurückkommen, bevor der Vorgang abgeschlossen ist. Wenn der Vorgang dann abgeschlossen ist - erfolgreich oder nicht - wird der entsprechende Callback des Sockets aufgerufen. Darum bringt CAsyncSocket selbst auch meist nichts. Üblicherweise leitet man eine Klasse davon ab, um die Callbacks überschreiben zu können.

Was du wann benutzt, hängt von der Architektur deines Programm ab. Wenn du warten kannst (z.B. weil du schon in einem separaten Thread zu Gange bist, oder kein UI vorhanden ist), kannst du CSocket benutzen. Wenn dein Programm so aufgebaut ist, dass du Anfragen absetzt und einfach nur eine Benachrichtigung bekommen willst, wenn die Anfrage bearbeitet ist, und währenddessen weiterarbeitest, nimm CAsyncSocket.

Geschrieben

Also, meine Problemeatik sieht folgendermassen aus:

Ich habe einen (oder mehrere) Comserver im Netz die zu irgendeinem Zeitpunkt

Daten über Ihre RS232 bekommen und über einen Port weiterschicken.

Ich muss nun meine Anwendung mit diesem Port verbinden und warten das

Daten kommen und diese dann verarbeiten. Meine Anwendung muss in diesem

Fall als Client arbeiten, also muss ich eine Connect auf Addresse und Port

machen und warten das Zeichen kommen. Schön wäre es auch, wenn ich über-

prüfen konnte ob der Connect noch gültig ist - wenn der Server z.B. die

Netzwerkverbindung verliert.

TinTin

  • 3 Wochen später...
Geschrieben

Dann nimm Async, sonst steht dein Programm solange bis Daten kommen. In der MSDN findest du Beispielcode. Sollte die Verbindung abreisen kommt (wenn ich mich richtig erinnere) die der Read-Callback mit einer Menge von 0 Byte Daten zurück.

Ein weiterer Vorteil von Async ist, dass das schöner skaliert, also auf aktuellen Prozessoren auf zwei Cores verteilt werden kann. Nachteil ist schwerere Programmierung.

Vielleicht baust du es erstmal synchron und steigst dann um.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...