Hey,
also ich hab schon das Forum hier durchsucht und bei google gesucht, aber die möglichen Lösungen haben entweder nicht funktioniert, oder ich hab sie nicht verstanden. Programmier mit Delphi jetzt erst seit 1 1/2 Jahren inner Schule.
Auf jedenfall hab ich mit den
Indy Klassen TCPClient und TCPServer einen Chat programmiert. Den Client hab ich nebenläufig programmiert, sodass ich keinen Timer benutze der "nur" alle 500 Millisekunden die Nachrichten ausliest.
Der Chat funktioniert soweit wunderbar, aber ich hab ein Problem, wenn sich der Client nicht abmeldet (Wenn er also z.b. über Task-Manager-> Prozesse einfach beendet wird). Dann kommt beim Server die Fehlermeldung: Socket-Fehler # 10054 Die Verbindung wurde von Peer zurückgesetzt.
Hier erma der Code:
Delphi-Quellcode:
procedure TForm1.TCPServerExecute(AThread: TIdPeerThread);
var s:string;
begin
with AThread.Connection do
begin
s:=readln;
//Der Fehler ist bei diesem s:=readln
//Hier kommt dann das, was der Server machen soll, wenn s ein Protokollbefehl ist:
//Also if s='...' then ...
end;
end;
So, wenn sich also ein Client nicht abmeldet, dann stürzt mein Server an der stelle s:=readln ab.
Ist soweit auch verständlich, aber ich krieg diesen Fehler nicht weg, egal was ich bisher versucht habe.
Hoffe ihr könnt mir da helfen.
Greetz
Master of Phoenix