Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re^3: UDP server with IO::Socket::INET

by rowdog (Curate)
on Mar 03, 2010 at 14:12 UTC ( [id://826412]=note: print w/replies, xml ) Need Help??

in reply to Re^2: UDP server with IO::Socket::INET
in thread UDP server with IO::Socket::INET

I don't see any (easy) way to get around having to have your clients let the server know they want to receive data. I suppose you can have the clients just close the socket when they're tired of listening and the server could remove them when the send fails but you still need some way to know which clients to send to.

Since you're on a LAN, I suppose you could send to the broadcast address and let the clients listen when they want to. If you are dealing with a sane OS you might want to check out IO::Socket::Multicast.

Replies are listed 'Best First'.
Re^4: UDP server with IO::Socket::INET
by ikegami (Patriarch) on Mar 03, 2010 at 15:42 UTC

    the server could remove them when the send fails

    That won't work. The send won't fail if the receiver stops receiving. You need some explicit disconnection mechanism.

    • send doesn't wait for the datagram to be sent and acknowledged, so at best you'd know if a past send failed.
    • There's no connection to keep track of a past send failures.
    • There's no acknowledgment sent by the remote end to say it didn't fail.

    The send will only fail if there's a local error (e.g. bad argument, no more resources, etc)

    Kudos for IO::Socket::Multicast, though

      If this was my project, I would definitely use an explicit disconnection.

      That said, ICMP does provide "Destination Unreachable" which could be used to detect clients that are MIA. Of course, using ICMP for this would be a lot of work for very little practical gain, which is why I recommended multicast.

        which is why I recommended multicast.

        Are you saying that multicast drops unreachable machines automatically?

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://826412]
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (2)
As of 2024-07-15 20:28 GMT
Find Nodes?
    Voting Booth?

    No recent polls found

    erzuuli‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.