I have a technical question about a network problem in an industrial production environment. They didn't like it in the Network Engineering because we use what they called "consumer grade" devices. We make manufacturing equipment that runs 24/7 in the aerospace industry and if you've ever flown a modern aircraft there's a good chance it was built using our "consumer grade" equipment, but it's still not up to their standard. They didn't like it on Software Engineering because I asked what tools I could use to analyze the problem and tools are off-topic. And since it's not about coding or programming languages (and also might involve tools) it's not a good fit for Stack Overflow. Super-user seems to be more for enthusiasts and hobbyists than for production environments. Server Fault seems more enterprise IT oriented. I've attached my question below - where does this belong?
My company makes industrial manufacturing equipment which is controlled from a Windows 7 PC. We also supply a "remote control" which is an Android app running on a Samsung smartphone that we supply. The Android device talks to the PC via a WAP (wireless access point) - we've tried this with DLinks and Buffalo Air Stations, which is connected to the PC via an ethernet cable. So...
PC =====cable==== WAP - - -WiFi- - - ANDROID DEVICE
Most of the time this works fine but on one particular system (which happens to be my system) if there is no activity for EXACTLY 1 minute then when the PC attempts to send a TCP packet to the Android it gets
Err=10053,Desc=Connection is aborted due to timeout or other failure
from winsock, and on Wireshark we see
10.1.2.1 10.1.2.11 TCP 60 40574→181 [RST] Seq=14 Win=0 Len=0
... where 10.1.2.1 is the IP address of the Android and 10.1.2.11 is the PC.
So it would seem that the Android is timing out at 1 minute, right? (like a battery-saving strategy). BUT -
- This only happens when talking with my PC and WAP, not with other WAP/PC combo's we have here. We've tried this with several Android and PC/WAP setups.
- The Android is set to leave WiFi "always on"
- If I interrogate the socket on the Android while this is happening, it still thinks it's open and listening.
- if I try to send a packet to the PC from the Android after the 1-minute mark it, the Android/Java socket reports "Exception ...sendto failed: ECONNRESET (Connection reset by peer)" (i.e., it seems to think the other side reset it.)
- Also, we can still ping the Android from the PC when it's getting RSTs (granted ping is ICMP, not TCP).
So something is timing out, but what? Can my WAP time-out? Can the WiFi layer of the connection time-out, as opposed to the socket layer, and why would that only happen with my PC/WAP and not others? (and how could I detect this?) What kinds of tests, tools or experiments might illuminate this? Is there a way to "listen to" the TCP communication between the PC and Android?