Ich habe die Problemstelle näher einkreisen können.
Beim ersten Connect -> Datei übertragen -> Disconnect funktioniert augenscheinlich alles ohne Probleme.
Erst beim zweiten Connect "läuft" die ServerConnect-Procedure nicht durch.
Delphi-Quellcode:
procedure TForm1.TcpServerConnect(AThread: TIdPeerThread);
var
NewClient : PClient;
begin
GetMem(NewClient, SizeOf(TClient));
NewClient.DNS := AThread.Connection.Socket.Binding.PeerIP;
NewClient.Connected := Now;
NewClient.LastAction := NewClient.Connected;
NewClient.Thread :=AThread;
AddProt ('Connect : "'+NewClient.DNS+'"');
AThread.Data:=TObject(NewClient);
try
Clients.LockList.Add(NewClient); // <- hier ist schluß
AddProt ('Connect in LockListe.');
finally
Clients.UnlockList;
end;
AddProt ('Connect : fertig');
end;
Vielleicht noch das Disconnect:
Delphi-Quellcode:
procedure TForm1.TcpServerDisconnect(AThread: TIdPeerThread);
var
ActClient: PClient;
begin
ActClient := PClient(AThread.Data);
AddProt ('Disconnect : "'+ActClient^.DNS+'"');
try
Clients.LockList.Remove(ActClient);
AddProt ('DisConnect aus lockliste');
finally
Clients.UnlockList;
end;
FreeMem(ActClient);
AThread.Data := nil;
AddProt ('Disconnect : fertig');
end;
Die AddProt-Proceduren sind nicht schuld. Die kann ich auskommentieren und es passiert das gleiche.
Irgendwas scheint beim Senden der Datei "kaputt" zu gegen
Ich weiß nicht weiter