Thema: Delphi TCP Server kommunikation

Einzelnen Beitrag anzeigen

RedShakal
(Gast)

n/a Beiträge
 
#1

TCP Server kommunikation

  Alt 21. Sep 2009, 19:45
Hallo, ich muss euch mal wieder belästigen. Früher habe ich eine Datenverbindung mittels Sockets aufgebaut. Client erstellt Server -> Schickt Daten an Hauptserver -> Hauptserver verteilt an alle Clients. Weil Sockets immer Probleme brachten und vor allem eher Consolen geeignet sind, bin ich Später auf IRC ausgewichen. Client erstellt Server -> Sendet im IRC Befehl -> Masterserver wertet aus -> Wiederholt den Befehl ( fals gültig ) -> Clients reagieren auf den Befehl wenn er vom Hauptserver kommt.

Nun hab ich umstruckturiert, weil der Hauptserver immer nur dann erreichbar war, wenn mein PC an war. Deshalb habe ich große Teile des Programms jetzt auf Web PHP basis umgelagert. Connecten -> Auslesen -> Auswerten. Nur bei einer Sache scheitere ich:

Ich will einen kleinen Part des Programms über TCP laufen lassen. Der Client soll dabei sowohl als Client als auch als Server dienen. Die anderen Clients können Connecten sobald ein Client einen Server erstellt ( über die alte IP eingabe Methode ). Dadurch brauche ich keinen Masterserver mehr.

Das Problem dabei ist:

Wie ich Indy TCP Clients Nachichten zum Server schicken lasse ist klar. Aber wie bringe ich den Server dazu auf Knopfdruck die benötigten Informationen ( am liebsten in Textform ) an alle Connecteten Clients zu übermitteln?. Und vor allem: Wie bringe ich möglichst ohne einen Ressourcenfressenden und Freezeverursachenden Timer, die Clients dazu auf den Befehl zu lauschen? Das Connecten klappt soweit Problemlos, das Schreiben von den Clients an den Server auch. Aber nicht umgekehrt... Ich kann keinen passenden Befehl dafür finden. Die Daten werden immer in Folgenden Format mittels explode übermittelt und zerlegt:

Befehl|Wert|Befehl2|Wert2|....|Befehl99|Wert99

Wie realisiert man soetwas am besten, ohne einen Server der permanet Online sein muss? So das sich die nutzer bei bedarf aus dem Client heraus selbst einen Server erstellen können.
  Mit Zitat antworten Zitat