Hello all, I did a minimalistic sniffer for a virtual HPIL loop, where 2-byte frames travel from a device (or controller) to the next but never back. (The loop is closed from the last to the first device.) So TCPDATA will only write to the pipe and TCPCLIENT will only read from it (see comments in append). Works.
Alas, when I start this Pipeline and do not start the adjacent (virtual) devices within one minute TCPCLIENT ends after presenting "60 ETIMEDOUT" (without quotes) on secondary output. The TIMEOUT argument (line 15) does not change this, also LINGER does not change this behaviour. Which of TCPCLIENT's arguments should I use instead? TIA.....Mike 0 * * * Top of File * * * 1 /* SNFIL EXEC: Show traffic on Virtual HPIL. MF 24.2.2013 */ 2 3 p.in = 60001 /* in port */ 4 p.ex = 60002 /* out port */ 5 exIP = 3.0.8.15 /* out IP */ 6 7 say 'To quit enter PIPMOD STOP' /* just a hint */ 8 'PIPE(sep ! end ?)', 9 '!a:tcplisten' p.in, /* get client connected */ 10 '! take', /* one only */ 11 '!b:tcpdata linger 1200', /* read in from the loop */ 12 '! fblock 2', /* make single frames */ 13 '!c:fanout', /* get a copy */ 14 '!d:tcpclient' exIP p.ex, /* send it out on the loop */ 15 'timeout 5000', 16 '?a:', /* errors from TCPLISTEN */ 17 '!e:faninany', /* collect more errors */ 18 '!f:chop blank', /* get leading return code ... */ 19 '! aggrc', /* ... and set RC of this PIPE */ 20 '?b:!e:', /* errors from TCPDATA */ 21 '?d:!e:', /* errors from TCPCLIENT */ 22 '?c:', /* frames from the loop */ 23 '! dcdfrm', /* decode frame */ 24 '! term', /* show on screen */ 25 '?f:', /* from CHOP */ 26 '! strip', /* get rid of outside blanks */ 27 '! term' /* put on CRT */ 28 29 exit rc 30 * * * End of File * * * ________________________________ CONFIDENTIALITY : This e-mail and any attachments are confidential and may be privileged. If you are not a named recipient, please notify the sender immediately and do not disclose the contents to another person, use it for any purpose or store or copy the information in any medium.
