Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

CSocket vs. CAsyncSocket - Die Unterschiede

Empfohlene Antworten

Veröffentlicht

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.

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.

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

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.