Einzelnen Beitrag anzeigen

361

Registriert seit: 27. Okt 2005
Ort: Berlin und Brandenburg
93 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Indy TCP Client Server - Verständnisfragen und Empfehlungen

  Alt 22. Jan 2015, 20:39
Hallo zusammen,

ich muss eine Kommunikation zwischen mehreren Clients zu einem Server über TCP/IP realisieren. Die Clients sind verteilt im Internet erreichbar. Die Clients müssen Daten vom Server abfragen. Spontan fielen mir hierzu die Indy TCP Client / Server Komponenten ein. IDE ist Delphi XE, Indy 10.5.7, Umsetzung soll damit erfolgen, Client-Anzahl ca. 100. Leider finde ich nirgendwo einen gültigen Download für die Indy TCP Client/Server Demos, daher hier ein paar Beispiele und Fragen. Ich habe bereits für Client und Server jeweils eine Demo-Anwendung implementiert. Die Kommunikation über Strings funktioniert bereits.

Beispiele:
- es sollen Statusabfragen an den Server erfolgen
- es sollen neue Daten abgefragt und in eine DB importiert werden
- die Clients versuchen, sich zyklisch zu verbinden
- es sollte eine gewisse Verschlüsselung der Daten erfolgen

Fragen:
- sind die Indy-Komponenten hierzu empfehlenswert bzw. gibt es bessere Alternativen für Delphi?
- wenn ich mehrere parallele Client-Verbindungen habe, wie kann ich als Server unterscheiden, mit wem ich aktuell kommuniziere? ich habe ja nur das "IdTCPServerExecute"-Event, wo alles von allen Clients aufläuft: muss ich hier mit Threads arbeiten und wenn ja wie?
- wie bekomme ich die IP des Clients heraus? "AContext.Connection.Socket.Binding.PeerIP" ist immer leer, obwohl ich über Mobilfunk mittels Tethering eine Verbindung von meiner Client-Demo zu meiner Server-Demo aufgebaut habe, ich brauche die öffentliche IP des Clients
- welchen Container (Dateien oder Protokoll) sollte ich bestenfalls zur Übertragung der Daten nutzen? es geht mir hier vor allen Dingen um die Datenkonsistenz. Kann ich sicher gehen, dass Daten auch komplett übertragen wurden wenn es keine Exception gibt? Oder muss ich damit rechnen, dass Daten verändert/unvollständig übertragen werden ohne, dass eine Exception auftritt? Stichwort: Fehlerkorrektur. Wie kriege ich als Server heraus, dass ich alle Daten erhalten habe?
- ist eine Verschlüsselung der Daten möglich und worauf muss man hier achten?

Vielleicht noch zur Info: Mir schwebte bisher recht laienhaft vor, Daten mittels IStringList in einen gepackten Stream zum Server zu übertragen. Ich freue mich daher über Eure Erklärungen, Vorschläge und Tipps. Vielen Dank und Gruß Sebastian

Geändert von 361 (22. Jan 2015 um 20:46 Uhr)
  Mit Zitat antworten Zitat