> When I call Client.Close the Client will be freed automatically > (destructor of Client will be called)?
Yes. Sidenote: if you do this from withing an event then call CloseDelayed. -- mvg, Wilfried http://www.mestdagh.biz http://www.comfortsoftware.be http://www.expertsoftware.be > -----Oorspronkelijk bericht----- > Van: twsocket-boun...@elists.org [mailto:twsocket-boun...@elists.org] > Namens Lukas Skala > Verzonden: donderdag 21 juli 2011 20:23 > Aan: twsocket@elists.org > Onderwerp: Re: [twsocket] how to legally close and free client > > > hello, > thank for quick and useful response. > i'll try to upgrade to V7 now because i'm still getting error (catched > by > Server.OnBgException event), I'm getting AccessViolation or > InvalidOperation exceptions. > These errors occurs after disconnecting client by server (i'm using > timer - in same way as you adviced me). I have tried to add C.Free call > but I have thought it was nonse (you have confirmed it me). > > One question for sure: > > When I call Client.Close the Client will be freed automatically > (destructor of Client will be called)? > > thank you again > have a nice day > lukas skala > > > > Dne 21.7.2011 17:29, Arno Garrels napsal(a): > > Lukas Skala wrote: > >> hello, > >> I have server application based on TWSocketServer, clients are > derived > >> from TWSocketClient class. > >> I need disconnect inactive clients. I'm not sure how to disconnect > >> client, I'm using this: > >> > >> procedure DisconnectMyClient(i: Integer); > >> var > >> C: TTcpSrvClient; > >> {TTcpSrvClient = class(TWSocketClient)} > >> begin > >> C := Server.Client[I] as TTcpSrvClient; > >> C.Close; > > That works, though "Server.Client[I].Close" would be enough. > > > > If want to close clients while iterating over the client list > > make sure you iterate from high index down to zero like: > > > > for I := Server.ClientCount -1 downto 0 do > > Server.Client[I].Close; > > > > A more brutal method to enforce client close was > > Server.Disconnect(). > > > >> C.Free; {Is this correct? sometimes it will throw access violation > >> here....} end; > > That's wrong, don't do that. Client objects are freed and > > removed from the internal client list when they are closed > > or disconnected automatically by the server. > > > >> > >> I'm using ICS v6. > > You should update to ICSv7. > > > >> I did notice that Server.OnClientDisconnect event is not triggered > >> when client is not closed correctly (e.g. client is plugged of > >> ethernet). > > That's the expected behaviour. > > > >> Is there any possibility to detect and/or disconnect these > >> clients automatically? > > Implement an idle timeout at the server side. Let the client send > > some keep alive data in intervals so the server knows a client is > > still there. > > > > > > > > > -- > To unsubscribe or change your settings for TWSocket mailing list > please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket > Visit our website at http://www.overbyte.be -- To unsubscribe or change your settings for TWSocket mailing list please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be