Markus Humm wrote:
> I've a TCP connection (simple TWSocket, only one PC may connect) and
> want to implement some keep-alive now. The rest of the application
> seems to work well, but the keepalive killed my whole day now without
> much success.
That's not difficult.
> Currently I'm doing this in the OnSessionAvailable of the server:
> Where a is a TWScket descendant:
> if not assigned(a) then
> a.dup(...); // here get's the connection assigned
> That works.
> My protocol is now such that the client sets up a timer when he
> connects to the sever which will send every few seconds a dummy
> request which the server simply has to echo back.
> The server also has
> a timer set up in the OnSessionConnected method which will check
> wether a keepalive request has been received within the time or not.
I would count other data sent by the client as well.
> If not he triggers the following:
OK, can be Close as well
Oh, that's not a good idea, free it in SessionClose event.
> The other socket of the server still is in the listening state where
> I've left it since he was told to listen.
> The client will notice it in its own timer because his keepalive
> requests won't be answered anymore.
> If the client detects this he
> starts another timer which tries every second to establish a
> connection to the same adress.
If the network cable is not plugged SessionClose event will be triggered
when you send something. If you detect a timeout call Close and
SessionClose will be triggered as well.
>From SessionClose post a custom message and from the message handler
Arno Garrels [TeamICS]
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be