I'm running PFClient with my own Mode S / ADS-B decoder which monitors the TCP Clients that are connected to it's TCP Server.
PFClient operates as TCP Client reading SBS data and my software operates as a TCP Server.
I have used PFClient version PF2.1.13 for as long as 20 days (continously) without a "Broken pipe" socket error.
Over a 17 hour period, PFClient version PF2.1.27 caused a "Broken pipe" socket error 714 times.
Here is an example of the messages that come out of my software when PFClient stops communicating:
TCP Server ERROR Returned from send - send_status = -1
TCP Server ERROR Returned from send - save_errno = 32, error_string = Broken pipe
SBS1 TCP Server 5 IPV4 0.0.0.0:45204 at Local Time = Saturday November 15, 2014 21:58:35.297
ERROR Socket Write Error - disconnected from TCP Client 127.0.0.1:34798
SBS1 TCP Server 5 IPV4 0.0.0.0:45204 at Local Time = Saturday November 15, 2014 21:58:40.202
Accepted Socket - connected to TCP Client 127.0.0.1:35362
What a "Broken Pipe" means:
See: http://stackoverflow.com/questions/...es-a-broken-pipe-exception-mean-to-the-socket
The program on your side still has its socket wide open, but the socket on the other side is no longer in communication, and didn't go through the standard "close pipe" procedure. This can happen if the other side lost power suddenly, if the physical line was severed, or whatever.
This is disconcerting as this "Broken Pipe" error message means that PFClient stopped communicating with my program using the TCP Socket.
PFClient keeps on running and in fact it always reconnects to the Socket. I also checked my stats at http://www.pinkfroot.com/sharestatus.asp?sharecode=MY_PF_ID and the stats are always updated each time I refresh the web page.
Here is how I configured PFClient
# pfclient --config
[2014-11-16T06:36:42.669Z] PF Client Version: PF2.1.27
prompt: Receiver Type: (30003)
prompt: Connection Type: (network)
prompt: Enter home location: LAT,LONG
prompt: Enter username supplied by pinkfroot: ME
prompt: Enter password supplied by pinkfroot: PASS
prompt: IP Address: (127.0.0.1)
prompt: TCP Port: (30003) 45204
Fortunately, the disconnect and reconnect are recorded in the pfclient_log log file that registers this event.
# more pfclient_log
>>>>>> Starting pfclient Feeder on Sat Nov 15 20:26:36 PST 2014 <<<<<<
[2014-11-16T04:26:37.334Z] PF Client Version: PF2.1.27
[2014-11-16T04:26:37.772Z] Connecting to 127.0.0.1:45204
[2014-11-16T04:26:37.782Z] Connected to receiver
[2014-11-16T05:58:35.172Z] Connection to receiver closed
[2014-11-16T05:58:40.177Z] Reconnected to the receiver
[2014-11-16T05:58:40.179Z] Reconnected to the receiver
Note that PFClient records UTC time which is 8 hours ahead of my timezone. I'm not sure why it recorded a reconnection twice when it happened only once.
After examining the "Broken Pipes" messages they mostly occur during light traffic times where is it possible for PFClient to not receive any data at all.
What are the reasons that PFClient would close a TCP Socket?
Does it expect a keep-alive message if the data messages stop being sent to it?
If so what how long will PFClient run without receiving a message such that it will close the TCP Socket? I'm seeing back to back Disconnect (Broken Pipe) / Reconnect sequences that are as little as 2.9 seconds apart.
If PFClient expects a "dummy" SBS1 message when no data is available, what should it be? Every SBS1 "MSG" message has an ICAO identifer. Should I use an illegal ICAO identifer (000000)? Or how about a MSG1 with just 21 commas? Or how about a "CLK" message which is a legal Basestation message but it is a meaningless message in this context.
See the following URL for more information about SBS1 Basestation Messages:
http://www.homepages.mcb.net/bones/SBS/Article/Barebones42_Socket_Data.htm
Blort
PFClient operates as TCP Client reading SBS data and my software operates as a TCP Server.
I have used PFClient version PF2.1.13 for as long as 20 days (continously) without a "Broken pipe" socket error.
Over a 17 hour period, PFClient version PF2.1.27 caused a "Broken pipe" socket error 714 times.
Here is an example of the messages that come out of my software when PFClient stops communicating:
TCP Server ERROR Returned from send - send_status = -1
TCP Server ERROR Returned from send - save_errno = 32, error_string = Broken pipe
SBS1 TCP Server 5 IPV4 0.0.0.0:45204 at Local Time = Saturday November 15, 2014 21:58:35.297
ERROR Socket Write Error - disconnected from TCP Client 127.0.0.1:34798
SBS1 TCP Server 5 IPV4 0.0.0.0:45204 at Local Time = Saturday November 15, 2014 21:58:40.202
Accepted Socket - connected to TCP Client 127.0.0.1:35362
What a "Broken Pipe" means:
See: http://stackoverflow.com/questions/...es-a-broken-pipe-exception-mean-to-the-socket
The program on your side still has its socket wide open, but the socket on the other side is no longer in communication, and didn't go through the standard "close pipe" procedure. This can happen if the other side lost power suddenly, if the physical line was severed, or whatever.
This is disconcerting as this "Broken Pipe" error message means that PFClient stopped communicating with my program using the TCP Socket.
PFClient keeps on running and in fact it always reconnects to the Socket. I also checked my stats at http://www.pinkfroot.com/sharestatus.asp?sharecode=MY_PF_ID and the stats are always updated each time I refresh the web page.
Here is how I configured PFClient
# pfclient --config
[2014-11-16T06:36:42.669Z] PF Client Version: PF2.1.27
prompt: Receiver Type: (30003)
prompt: Connection Type: (network)
prompt: Enter home location: LAT,LONG
prompt: Enter username supplied by pinkfroot: ME
prompt: Enter password supplied by pinkfroot: PASS
prompt: IP Address: (127.0.0.1)
prompt: TCP Port: (30003) 45204
Fortunately, the disconnect and reconnect are recorded in the pfclient_log log file that registers this event.
# more pfclient_log
>>>>>> Starting pfclient Feeder on Sat Nov 15 20:26:36 PST 2014 <<<<<<
[2014-11-16T04:26:37.334Z] PF Client Version: PF2.1.27
[2014-11-16T04:26:37.772Z] Connecting to 127.0.0.1:45204
[2014-11-16T04:26:37.782Z] Connected to receiver
[2014-11-16T05:58:35.172Z] Connection to receiver closed
[2014-11-16T05:58:40.177Z] Reconnected to the receiver
[2014-11-16T05:58:40.179Z] Reconnected to the receiver
Note that PFClient records UTC time which is 8 hours ahead of my timezone. I'm not sure why it recorded a reconnection twice when it happened only once.
After examining the "Broken Pipes" messages they mostly occur during light traffic times where is it possible for PFClient to not receive any data at all.
What are the reasons that PFClient would close a TCP Socket?
Does it expect a keep-alive message if the data messages stop being sent to it?
If so what how long will PFClient run without receiving a message such that it will close the TCP Socket? I'm seeing back to back Disconnect (Broken Pipe) / Reconnect sequences that are as little as 2.9 seconds apart.
If PFClient expects a "dummy" SBS1 message when no data is available, what should it be? Every SBS1 "MSG" message has an ICAO identifer. Should I use an illegal ICAO identifer (000000)? Or how about a MSG1 with just 21 commas? Or how about a "CLK" message which is a legal Basestation message but it is a meaningless message in this context.
See the following URL for more information about SBS1 Basestation Messages:
http://www.homepages.mcb.net/bones/SBS/Article/Barebones42_Socket_Data.htm
Blort