Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

AW: ServerSocket.Socket.Connections[i].Close;

  Alt 12. Feb 2011, 01:17
Wird dies in der Liste lb_Clients.Items[x] exakt nachgeführt sollten die Connections und die Items übereinstimmen.
Wenn aber ein Client von sich aus die TCP-Verbindung schliest oder die Verbindung zum Client unterbochen werden sollte, dann passen die beiden Listen nicht mehr zusammen.

So wie Sir Rufo das gezeigt hat ist es schon besser, aber immer noch nicht ganz wasserdicht.
Könnte ja sein, dass das die Verbindung schon weg ist und dann würde lb_Clients.Items.Objects[i] auf ein
freigegebenes Objekt zeigen:
Delphi-Quellcode:
// ungetestet
var
  SelectedSocket : TCustomWinSocket;
...
if lb_Clients.Selected[i] then
begin
  SelectedSocket := TCustomWinSocket(lb_Clients.Items.Objects[i]);
  // schauen, ob SelectedSocket noch in der Liste ist
  for j:= 0 to ServerSocket.Socket.ConnectionCount-1 do
  begin
    if SelectedSocket=ServerSocket.Socket.Connections[j] then
    begin
      SelectedSocket.close;
      break;
    end;
  end;
  lb_Clients.Items.Delete(i);
end;
  Mit Zitat antworten Zitat