AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Datenübertragung im Netzwerk
Thema durchsuchen
Ansicht
Themen-Optionen

Datenübertragung im Netzwerk

Ein Thema von MechMac666 · begonnen am 22. Jun 2014 · letzter Beitrag vom 22. Jun 2014
Antwort Antwort
MechMac666

Registriert seit: 9. Nov 2008
95 Beiträge
 
#1

Datenübertragung im Netzwerk

  Alt 22. Jun 2014, 14:12
Hallo,

ich habe mit den Standard-Komponenten von Delphi einen Client und einen Server erstellt.
Zunächst sende ich eine Anfrage an den Server. Diese Anfrage wird bearbeitet und das Resultat soll zurück an den Clienten gesendet werden.
Wie stelle ich das am besten an?

1. Ich bearbeite die Anfrage direkt im OnAccept Event des Servers und könnte dann über Clientsocket zurücksenden.
2. Der Server bekommt zusätzlich eine Client Komponente und der Client noch eine Server-Komponente. (Wobei mir das eher als nicht praktikabel vorkommt)

Zu Lösung 1:
Das Problem bei Lösung 1 ist, das die Bearbeitung der Anfrage, welche der Server erhalten hat, evtl. ein bisschen Zeit in anspruch nimmt. Ich denke mir, dass das nicht so gut ist, wenn ich die Server-komponente durch die Bearbeitungszeit so lange blockiere.

Zu Lösung 2:
Aktuell speichere ich die erhaltenen Anfragen in eine Art Job-Liste und bearbeite sie der Reihe nach ab. In der Jobliste steht auch die IP-Adresse, von der die Anfrage ursprünglich kam.
Meine Gedanke war dann, nach der Bearbeitung das Resultat zurück zum Client zu senden. Ich habe jetzt aber nur dessen IP und kann nicht mehr auf Clientsocket vom OnAccept Ereignis zurückgreifen.
So wie ich das verstehe, kann der Server nur über den Clientsocket zum Clienten senden.

Welcher Weg wäre hier zu empfehlen?
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#2

AW: Datenübertragung im Netzwerk

  Alt 22. Jun 2014, 19:16
Hi, ich habe gerade sowas mit den ICS Komponenten realisiert.
Dabei habe ich in der einen Anwendung einen Socketserver, der bei einer ankommenden Verbindung für diese eine Kommunikationsthread erzeugt und die Verbindung zwecks Nachrichtenempfang an diesen übergibt.
Der Thread macht nichts anderes als die Nachrichten zu empfangen und in eine Stringlist des Hauptprogramms einzutragen. Anschließend benachrichtigt er per Postmessage das Hauptprogramm, was sich um die weitere Verarbeitung kümmert. So kann der Thread fleißig empfangen und wird nicht mit irgendwelchen Bearbeitungen am Empfang gehindert.

Der Client arbeitet ähnlich, allerdings nur mit einem Thread (zusätzlich zum Hauptthread) nach dem gleichen Prinzip. Im Thread gibt es natürlich auch eine Stringlist, die die zu senden Nachrichten enthält.

Die Datenübergabe vom Hauptthread in den Clientthread erfolgt per Postmessage.

Sowohl Client als auch Server können über den Socket Daten versenden.

Wenn du mit den Komponenten arbeiten willst, kann ich dir gerne bei der Realisierung helfen.
Ich finde zwar die ICS nicht zwangsläufig selbsterklärend, und es gibt keine richtige Dokumentation, aber es gibt ein paar gute Internetseiten und gute Demos deren Studium mir gut geholfen hat.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:44 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