Just to clarify- when you say "add another command", do you mean add a
command to the PC to send to the Android device that it's closing? That
would be a good solution but I don't know if I have any control over what
the PC sends. This is the first and only Android/Java device on that
network and I think the assumption is that *of course* the Android app will
just know or get an event when the PC closes the connection. The other
devices on that network are either Windows PC's running sockets that
fire-off event handlers when the connection is closed, or specialized
manufacturing hardware running Linux with low-level custom code to detect
things like FINs and RST's. Android is my first exposure to java so I
didn't know, either.
Maybe if I show the PC people this conversation it will help. Thanks.
On Tuesday, April 2, 2013 10:50:03 AM UTC-4, Piren wrote:
>
> Thats how it works in Java...
>
> http://stackoverflow.com/questions/155243/why-is-it-impossible-without-attempting-i-o-to-detect-that-tcp-socket-was-grac
>
> <http://stackoverflow.com/questions/155243/why-is-it-impossible-without-attempting-i-o-to-detect-that-tcp-socket-was-grac>
>
> You shouldn't base your socket state to display this information anyhow,
> since you could have the exact same issue for any other kind of
> disconnection (i.e, it will appear "live" but once a command will be sent
> the socket will fail or when the KeepAlive runs out... which is btw an
> already existing "timer controlled loop that polls endlessly just to find
> out if the server has closed the connection" .. hehe ). Instead add another
> command to signal the device that the PC chose to close the connection.
>
>
> On Tuesday, April 2, 2013 5:02:08 PM UTC+3, plnelson wrote:
>>
>> I'm writing software for an Android device used as a remote control for
>> an industrial process being run by a PC. The PC is always listening and
>> the Android device opens a connection via the Android socket class, which
>> provides a client-side TCP socket. Once the connection is established
>> commands flow back and forth over the connection. The PC can close the
>> connection at any time, issuing a FIN, asynchronously. My requirement is
>> that I display this on the Android device as soon as it happens.
>>
>> Studying the Android socket, it does not seem to be event driven. There
>> doesn't seem to be any way to raise an event or a callback if the server
>> closes the connection. It looks like the first sign I'll have is getting
>> an error if I try to send something. Is this true or am I
>> misunderstanding something? The guys on the PC side don't believe it
>> because they say that their TCP socket software raises an event and calls a
>> handler if a connection is closed on the other end.
>>
>> So does this mean I'm going to have to sit in a timer-controlled loop and
>> poll endlessly just to find out when the server has closed the connection
>> or am I overlooking a better option?
>>
>> Thanks in advance.
>>
>
--
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.