Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Client-Server-Datenübertragung (https://www.delphipraxis.net/171938-client-server-datenuebertragung.html)

HJay 3. Dez 2012 17:42

AW: Client-Server-Datenübertragung
 
@mjustin: Danke, idHTTP werde ich mir morgen früh mal anschauen.

Die DataSnap-Idee werde ich morgen auch weiterverfolgen und vielleicht mal mit einem kurzen Demoprojekt ausprobieren.

stahli 3. Dez 2012 18:35

AW: Client-Server-Datenübertragung
 
DataSnap ist für solche Dinge gedacht.
Man kann Datasets, Streams und Objekte übertragen und auch Methoden vom Client aus auf dem Server ausführen.

Allerdings ist das Framework ziemlich fett und (was man so hört) relativ langsam und u.U. fehleranfällig.

Aber versuchen würde ich es an Deiner Stelle...


Bei den Indys muss immer der Client beim Server anfragen, der dann "nix" oder "ObjektDaten" zurück schickt.
Prinzipiell sollte das auch machbar sein.

mjustin 3. Dez 2012 19:32

AW: Client-Server-Datenübertragung
 
Zitat:

Zitat von stahli (Beitrag 1194173)
Bei den Indys muss immer der Client beim Server anfragen, der dann "nix" oder "ObjektDaten" zurück schickt.

So ist es eigentlich nicht: bei jeder TCP Verbindung sind beide Seiten völlig gleichberechtigt, der "Server" kann auch von sich aus das Senden von Daten an den "Client" beginnen. Bekannte asynchrone und bidirektionale Protokolle sind Telnet, WebSocket und STOMP.

stahli 3. Dez 2012 20:38

AW: Client-Server-Datenübertragung
 
@mjustin
Bist Du sicher? Hast Du mal einen Link zu einem Beispiel?

Bummi 3. Dez 2012 22:09

AW: Client-Server-Datenübertragung
 
@stahli
das ist einer der Gründe warum ich für einfache Komponenten wie TCPClient unf TCPServer plädiert habe. Man merkt dann schneller dass da einfach eine nur Verbindung offen ist und kann sich in beider Richtungen austoben.

mjustin 4. Dez 2012 08:53

AW: Client-Server-Datenübertragung
 
Zitat:

Zitat von stahli (Beitrag 1194193)
@mjustin
Bist Du sicher? Hast Du mal einen Link zu einem Beispiel?

Gerne, auf Stackoverflow zum Beispiel hier:

Indy TCP Client/Server with the client acting as a server

Delphi-Quellcode:
var
  sPrompt: String;
  sResponse: String;
begin
  // Set port to connect to
  IdTCPClient1.Port := 8080;
  // Set host to connect to
  IdTCPClient1.Host := '127.0.0.1';
  // Now actually connect
  IdTCPClient1.Connect;
  // Read the prompt text from the server
  sPrompt := IdTCPClient1.Socket.ReadLn;
  // Show it to the user and ask the user to respond
  sResponse := InputBox('Prompt', sPrompt, '');
  // Send user's response back to server
  IdTCPClient1.Socket.WriteLn(sResponse);
  // Show the user the server's final message
  ShowMessage(IdTCPClient1.Socket.AllData);
end;
oder serverseitig:

Delphi-Quellcode:
var
  sName: String;
begin
  // Send command to client immediately after connection
  AContext.Connection.Socket.WriteLn('What is your name?');
  // Receive response from client
  sName := AContext.Connection.Socket.ReadLn;
  // Send a response to the client
  AContext.Connection.Socket.WriteLn('Hello, ' + sName + '.');
  AContext.Connection.Socket.WriteLn('Would you like to play a game?');
  // We're done with our session
  AContext.Connection.Disconnect;
end;

Klaus01 4. Dez 2012 09:03

AW: Client-Server-Datenübertragung
 
.. das liegt doch schon im Protokoll (TCP) begründet, dass wenn eine Verbindung etabliert ist der Server auch mit dem Client kommunizieren kann.

Einzig der Client ist in der Lage ein TCP Verbindung zu initiieren.

Grüße
Klaus

mjustin 4. Dez 2012 09:28

AW: Client-Server-Datenübertragung
 
Zitat:

Zitat von Klaus01 (Beitrag 1194224)
Einzig der Client ist in der Lage ein TCP Verbindung zu initiieren.

Ein Computer kann ein Server und Client zugleich sein (http://de.wikipedia.org/wiki/Client-Server-Modell).

Client ist die Seite, die einen Dienst auf einem Server nutzt. In der Regel stellt er auch die Verbindung her.

Eine bekannte Ausnahme von dieser Regel ist FTP im Active Modus, hierbei meldet sich der FTP Client an, danach baut der FTP Server eine Verbindung zum Client auf.

Bei Peer-To-Peer Netzen, in denen jeder Computer Verbindungen sowohl initiiert als auch akzeptiert, sind alle Rechner Client und Server gleichzeitig.

HJay 5. Dez 2012 11:31

AW: Client-Server-Datenübertragung
 
Kurzes Feedback von mir:

DataSnap habe ich mit Delphi 2010 nicht zum Laufen bekommen. Alle Embarcadero-Tutorials setzen höhere Versionen voraus. Das in den Tutorial notwendige "DataSnap-Client-Module" gibt es bei mir unter "Menu > Neu > DataSnap" gar nicht. Schade, wäre einen Versuch wert gewesen. -- Zum Glück plane ich aber ohnehin ein Upgrade auf XE3 und werde mir die Sache dann noch einmal ansehen.

Also werde ich die kommenden Tage noch einmal einen Blick auf die vorgeschlagenen Indy-Komponenten werfen. Das war ja wohl die Empfehlung hier, oder? Bezüglich Internet gibt es dermaßen viel Auwahl, dass es wirklich schwer ist, sich als Anfänger zu entscheiden. Da hätte ich mir eher EINEN Satz perfekter, ausgereifter Komponenten gewünscht statt so ein Wirrwarr.

Danke für Eure Antworten in diesem Thread!

Sir Rufo 5. Dez 2012 11:37

AW: Client-Server-Datenübertragung
 
Als Alternative gibt es auch noch mORMot


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:22 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz