Hi!
Ich gehe einfach mal davon aus, dass du es an deinem Rechner per localhost als Adresse getestet hast.
Ja, sowohl Client als auch später der Server werden nicht mehr "richtig" reagieren, und zwar beispielsweise, sobald du das Fenster verschiebst oder eine Nachricht verschickst.
Das Problem liegt bei Client.Readln und Server.Readln. Diese Befehle arbeiten im Blocking-Modus. Einmal ausgeführt blockieren diese Befehle das Programm so lange, bis etwas gelesen werden konnte. Daher kannst du zwar Nachrichten weiterhin eintippen und die werden auch versendet, aber du kannst sonst nichts weiter mit der Applikation anfangen, weil er direkt nach dem Versenden die Form wieder blockiert.
Eine Lösung des Problems wären beispielsweise Thread + Anti-Freeze.
Client: Wenn du nicht weißt, wie du einen Thread erstellt und später wieder entfernst, dann benutze die IdThread-Komponente, mit der kannst du alles machen, was man mit normalen Threads auch machen kann. Schreibe in den Thread unter Execute eine Schleife mit dem von weiter oben zu findenden "Einlesen"-Quellcode als Schleifenkörper.
Dann noch IdAntiFreeze drauf, gegebenenfalls aktivieren und fertig.
Server: Hier reicht die Anti-Freeze-Komponente aus, da der IdTCPServer bereits einen Thread-Manager hat (um mehrere Verbindungen zu verwalten).
Anti-Freeze behebt das Blocking von Readln nicht vollständig, daher wird noch der oben beschriebene Thread benötigt.
Und ja, eigentlich haben die Read-Befehle von Client und Server eigentlich ein Read-Timeout (mit einem Standard von 10 Millisekunden)... der funktioniert nur nicht so wie er sollte. *fg*
Wenn es da draußen jemanden gibt, der eine "einfachere" Lösung hat, dann immer her damit *g*
Greetz,
Knuddelbaer