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.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...