AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi (A)Synchrone Netzwerkverbindung
Thema durchsuchen
Ansicht
Themen-Optionen

(A)Synchrone Netzwerkverbindung

Ein Thema von Neutral General · begonnen am 8. Dez 2008 · letzter Beitrag vom 9. Dez 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

(A)Synchrone Netzwerkverbindung

  Alt 8. Dez 2008, 23:51
Hi,

Wollte mal fragen, was der Unterschied zwischen einer synchronen und asynchronen TCP-Verbindung ist. Was sind die Vorteile/Nachteile? Wofür verwendet man was? Und wie realisiert man asynchrone TCP-Verbindungen (in Delphi?)

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: (A)Synchrone Netzwerkverbindung

  Alt 9. Dez 2008, 00:00
Naja, das ganze dürfte äquivalent zur (a)synchronen Programmierung im allgemeinen sein.

Sprich Synchron bedeutet: Du lädst beispielsweise eine Datei herunter und die procedure oder function kehrt zum Hauptprogramm zurück, sobald der Downlaod beendet ist - während selbiges dadurch blockiert wird.

Asynchron bedeutet du startest den Download, und machst mit deinem Programm ganz normal weiter. Wann der Download fertig ist, interessiert dann erstmal nicht (Multithreading vs. Singlethreading).

Oder anderes Beispiel: Du schickst an einen Server eine Anfrage und willst wissen, wie viele Clients er gerade verbunden hat. Bei synchroner Programmierung läuft dein Programm solange nicht weiter, bis es eine Antwort hat. Bei asynchroner ist es egal wann der Server die Antwort schickt, irgendwann kommt sie halt und dann kannst du damit weiterarbeiten.

Dauerhaft offene TCP-Verbindungen dürften sich sowieso nur asynchron sinnvoll implementieren lassen (da ja sonst irgendwie dein Programm allein durch das offenhalten der Verbindung blockiert würde ).

Vorteil und Nachteil? Ich würde sagen, kommt ganz auf den Einsatzzweck an. Problem (wie bei allen asynchronen Sachen) ist: Die Synchronisierung Sprich du musst genau aufpassen was du wann mit welchen Daten machen kannst bzw. wann diese zur Verfügung stehen. Das weißt du bei synchroner Programmierung einfach immer sicher!
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: (A)Synchrone Netzwerkverbindung

  Alt 9. Dez 2008, 00:07
Hi,

Danke für die Antwort soweit

Zitat von Meflin:
Vorteil und Nachteil? [...] Sprich du musst genau aufpassen was du wann mit welchen Daten machen kannst bzw. wann diese zur Verfügung stehen. Das weißt du bei synchroner Programmierung einfach immer sicher!
Hast du evtl grad ein Beispiel parat für ein Server (Client) der aufpassen muss, wann er was mit welchen Daten machen kann?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#4

Re: (A)Synchrone Netzwerkverbindung

  Alt 9. Dez 2008, 00:17
Zitat von Neutral General:
Hast du evtl grad ein Beispiel parat für ein Server (Client) der aufpassen muss, wann er was mit welchen Daten machen kann?
Hm, kommt ganz drauf an auf welcher Ebene man ansetzen will.

Wenn du die Indys, Synapse oder sonst ne Library verwendest, musst du i.d.R. garnicht aufpassen, weil dir hier ja schön die Events beim Datenempfang u.ä. bereitgestellt werden (zumindest die Indys sind glaube ich auch von Haus aus schon multithreaded).

Wenn du dir allerdings selbst irgendeine Funktion zusammenbaust kann folgendes passieren:
1. Du schickst eine asynchrone Anfrage an einen Server (sprich du führst sie in einem eigenen Thread aus).
2. Der Server ist gerade nicht erreichbar, sprich dein Thread arbeitet sich nen Ast
3. Dein Programm bekommt davon aber weiter nichts mit, weil du keine ausreichende Kontrollfunktion implementiert hast...
4. Du versuchst mit der Antwort vom Server (die ja nie bei dir angekommen ist) irgendwann irgendetwas zu machen, beispielsweise hättest du einen Integer erwartet, aber nichts bekommen, castest also nichts auf Integer und bumms ist dein Programm abgestürzt

Das gleiche kann auch passieren, wenn der Server antwortet, aber du schneller auf die Antwort zugreifen willst, als sie verfügbar ist, beispielsweise wenn du die Methode, die die Antwort braucht, direkt nach dem Start der asynchronen Anfrage ausführst. Dann ist die Methode nämlich mit ziemlicher Sicherheit schneller als deine Internetverbindung
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: (A)Synchrone Netzwerkverbindung

  Alt 9. Dez 2008, 00:22
Hi,

Ok soweit verstanden. Allerdings arbeitet sowohl Synapse als auch die Indies synchron wenn ich mich nicht täusche. Kennst du (oder jemand anderes) eine Library die asynchron arbeitet?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#6

Re: (A)Synchrone Netzwerkverbindung

  Alt 9. Dez 2008, 00:31
Ich dachte eigentlich die Indys wären schon asynchron KAnnste aber leicht asynchronisieren, indem du sie in Threads auslagerst
ICS sollte aber von Haus aus asynchron arbeiten: http://www.overbyte.be/

Siehe dazu auch http://wiki.overbyte.be/wiki/index.p...onous_Paradigm
  Mit Zitat antworten Zitat
WS1976
(Gast)

n/a Beiträge
 
#7

Re: (A)Synchrone Netzwerkverbindung

  Alt 9. Dez 2008, 06:54
Hallo,

Unter asynchroner Kommunikation versteht man in der Informatik und Netzwerktechnik einen Modus der Kommunikation, bei dem das Senden und Empfangen von Daten zeitlich versetzt und ohne Blockieren des Prozesses durch bspw. Warten auf die Antwort des Empfängers (wie bei synchroner Kommunikation der Fall) stattfindet.

Unter synchroner Kommunikation versteht man in der Informatik und Netzwerktechnik einen Modus der Kommunikation, bei dem die Kommunikationspartner (Prozesse) beim Senden oder beim Empfangen von Daten immer synchronisieren, also warten (blockiert), bis die Kommunikation abgeschlossen ist. Wird sowohl beim Senden als auch beim Empfangen gewartet (der Sender stellt also eine Anfrage und wartet auf Antwort), so entspricht das einem Rendezvous der beiden beteiligten Prozesse. Das Blockieren des Prozesses wird intern durch geeignete Mechanismen zur Prozesssynchronisation erreicht.

Grüsse
Rainer
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: (A)Synchrone Netzwerkverbindung

  Alt 9. Dez 2008, 14:20
Hi,
kleines Beispiel für die idHTTP Komponente im Thread:


Client / Server Threading mit Indy
Experts-Exchange

Gruß
s!
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#9

Re: (A)Synchrone Netzwerkverbindung

  Alt 9. Dez 2008, 14:47
Und du gehst einfach mal davon aus dass hier jeder (und NG im speziellen) einen EE-Account hat

@Rainer: Danke, dass du alles nochmal bestätigt hast, was ich schon geschrieben habe
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: (A)Synchrone Netzwerkverbindung

  Alt 9. Dez 2008, 15:26
Zitat von Meflin:
Und du gehst einfach mal davon aus dass hier jeder (und NG im speziellen) einen EE-Account hat

@Rainer: Danke, dass du alles nochmal bestätigt hast, was ich schon geschrieben habe
Ganz genau, davon bin ich ausgegangen, zu mal man sich ja "Free" registrieren kann, aber bei bedarf, kann ich ja auch die 10 Seiten Quelltext posten *hehe
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz