Hello,

   I looked in the archive before posting this and couldn't find an answer, so 
please excuse me if it has already been commented.

   I was wondering if there is a way to detect a lost connection when the other 
side doesn't close the connection "cleanly". 

   Actually the server I wrote with MINA takes connections from GPRS modules 
and eventually sends messages to some of them. The matter is that sometimes the 
GPRS modules face some network problem and lose their IP session. When that 
happens, MINA (or the Operating System, for that matter) takes a long time 
(many minutes) to realize the connection is gone. 

   I am aware that there are means to adjust this delay within the OS, but I 
was expecting MINA to check that for me. If MINA sends a string of bytes for 
which the TCP/IP stack never got an ACK, I think MINA was supposed to know it. 

   Of course I could implement some kind of protocol to check for active 
connections: the GPRS modules could periodically send some data, and 
sessionIdle() would point out the 'mute' peers and then those sessions could be 
closed. But that isn't very much efficient, and also the GPRS is charged by 
traffic and this approach would result in a high fixed cost for the system.

   I was hoping MINA could confirm that all bytes scheduled to be sent for a 
certain session were actually received by the other party; if some bytes remain 
there after a Timeout, then some event should be triggered.

   Is there any easy way to achieve this, and I'm still not able to see?

   Thanks in advance,


Fernando

Reply via email to