Was ist der Unterschied zwischen synchronen und asynchronen übertragung im TCP/ IP-socket-Programmierung?
Ich bin neu in C++ und ich bin versucht, entwickeln eine client-server-Anwendung basiert auf der boost::asio Bibliothek. Ich bin (noch) nicht in der Lage zu verstehen, richtig den Unterschied zwischen sync und async-Modus. Ich habe vorher studiert, web-Protokoll-Dienste wie HTTP und AJAX. Von diese Erklärung, es ist klar, dass HTTP ist synchron und AJAX asynchron ist. Was ist der Unterschied in der TCP-socket-Kommunikation in Bezug auf sync und async? Und welcher Modus ist besser, aus der Perspektive von enterprise-level multi-threaded-Anwendung-Entwicklung, und warum?
So wie ich das verstehe synchronen Modus, der client blockiert für eine Weile, bis er das Paket empfängt/Daten-Nachricht vom server. Und im asynchronen Modus, der client führt eine andere operation, ohne zu blockieren den Laufenden Betrieb. Warum ist das anders? Ist async gleichbedeutend mit UDP? Es scheint, dass es egal ist, wenn es erhält übertragung Bestätigung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
TCP-übertragung ist immer asynchron. Was ist synchron oder asynchron, ist das Verhalten der API. Eine synchrone API etwas tut, während man es nennt: zum Beispiel
send()
verschiebt Daten an die TCP-sende-Puffer und gibt zurück, wenn es fertig ist. Eine asynchrone API gestartet wird, wenn Sie ihn nennen, arbeitet unabhängig, nachdem es kommt zu Euch zurück, und ruft Sie zurück oder bietet eine interrogable Griff über die Fertigstellung benachrichtigt.HTTP synchron in dem Sinne, dass Sie senden Sie eine Anfrage, eine Antwort zu erhalten, anzeigen oder verarbeiten der Antwort,, alles in Ordnung.
Ajax asynchron ist, nur in dem Sinne, dass es unabhängig von der Seite Anfrage/Antwort-Zyklus in den umliegenden HTTP-request. Es ist eine schlechte Wahl der Terminologie. Es wäre besser gewesen, einen Begriff zu verwenden, wie 'verschachtelte', 'out-of-band', ...
Enterprise level multi-threaded app
? Was ich versuche zu entwickeln, ist ein Lizenzmodell, die müssen robust genug sein, um die Anfrage und schicken die Antwort an Client-Software.