in reply to Netcat

From the netcat documentation:

This continues indefinitely, until the network side of the connection shuts down. Note that this behavior is different from most other applications which shut everything down and exit after an end-of-file on the standard input.

It seems likely that netcat is sitting there waiting for replies from your perl script. Can you get your friend to try using the -q switch on netcat? I think that will make it quit after getting an EOF on /tmp/sock (assuming it ever gets one...). Failing that, have you tried using a timeout in your script?

There doesn't seem to be any way to do a half-close on an IO::Socket::INET, which would seem like the right solution to me. Anyone want to prove me wrong?

cat /tmp/sock | nc ipaddr port

Why do people always think they need to do this instead of nc ipaddr port < /tmp/sock?

Replies are listed 'Best First'.
Re: Re: Netcat
by Thelonius (Priest) on Nov 24, 2002 at 01:17 UTC
    There doesn't seem to be any way to do a half-close on an IO::Socket::INET, which would seem like the right solution to me. Anyone want to prove me wrong?
    If no_slogan is right, and I'm guessing he is, try putting this code before your while:
    shutdown($new_sock, 1);
    Let us know if that works.

    Also, if you really want to impress the babes, code your while loop like this:

    print while <$newsock>;
    Updated: 11/25/2002: It works on my system
Re: Re: Netcat
by waswas-fng (Curate) on Nov 23, 2002 at 20:39 UTC
    cat /tmp/sock | nc ipaddr port
    Why do people always think they need to do this instead of nc ipaddr port < /tmp/sock?

    No idea, its like people not using $_ =)

    -Waswas