in reply to Exit/Crash on write to client socket

Every socket has a built-in timeout initialized to a system dependent deafult. To change this, use POSIX and setsockopt. Specifically:
setsockopt sockid, proto, SO_SNDTIMEO (or SO_RCVTIMEO), ....
read up on what follows since its dependent on the variable passed before. For better control over sockets, look into C or Inline. Additionally, I believe IO::Socket may help you.
AgentM Systems nor Nasca Enterprises nor Bone::Easy nor Macperl is responsible for the comments made by AgentM. Remember, you can build any logical system with NOR.

Replies are listed 'Best First'.
Re: Re: Exit/Crash on write to client socket
by Anonymous Monk on Jan 27, 2001 at 21:51 UTC
    IO::Socket is no help at all, since I want the code to be portable across our intranet: Our elderly HP box seems to have a problem with getprotobyname() function (I donīt know why and I canīt do anything about that), so the whole IO::Socket module doesnīt work there. See sample below.
    Iīll play around with setsockopt() now. It should help, for otherwise there seems to be a serious flaw in the whole (Perl?) socket stuff: What if I donīt know anything about those 30s on the other side? <sigh>Iīve got 3 bright Perl books, each having a section on sockets, but none saying anything about the use of setsockopt() ... </sigh>

    Thanks for your help!
    --Martin

    #!/usr/bin/perl -w use IO::Socket; $sock = new IO::Socket::INET (PeerAddr => 'www.perlmonks.org', PeerPor +t => 80, Proto => 'tcp'); die "Mess: $!" unless $sock;
    results is:
    IO::Socket::INET: Cannot determine protocol at ./test.pl line 5
    Mess: Bad file number at ./test.pl line 6.