NAME
POE::Wheel::UDP - POE Wheel for UDP handling.
SYNOPSIS
use POE;
use POE::Wheel::UDP;
POE::Session->create(
inline_states => {
_start => sub {
my $wheel = $_[HEAP]->{wheel} = POE::Wheel::UDP->new(
LocalAddr => '10.0.0.1',
LocalPort => 1234,
PeerAddr => '10.0.0.2',
PeerPort => 1235,
InputEvent => 'input',
);
$wheel->put(
{
payload => 'This datagram will go to the default address.',
},
{
payload => 'This datagram will go to the explicit address and port I have paired with it.',
addr => '10.0.0.3',
port => 1236,
},
);
},
input => sub {
my ($wheel_id, $input) = @_[ARG0, ARG1];
print "Incoming datagram from $input->{addr}:$input->{port}: '$input->{payload}'\n";
},
}
);
POE::Kernel->run;
DESCRIPTION
POE Wheel for UDP handling.
Package Methods
$wheel = POE::Wheel::UDP->new( OPTIONS );
Constructor for a new UDP Wheel object. OPTIONS is a key => value pair list specifying the following options:
- LocalAddr (required)
- LocalPort (required)
-
Specify the local IP address and port for the created socket. LocalAddr should be in dotted-quad notation, and LocalPort should be an integer. This module will not resolve names to numbers at all.
- PeerAddr (optional)
- PeerPort (optional)
-
Specify the remote IP address and port for the created socket. As above, PeerAddr should be in dotted-quad notation, and PeerPort should be an integer. No names will be resolved. These arguments are optional, and if not specified a pair will be required during the ->put() call.
- InputEvent (optional)
-
Specify the event to be invoked via Kernel->yield when a packet arrives on this socket. Currently all incoming data is truncated to 1500 bytes. If you do not specify an event, the wheel will not ask the kernel to pass incoming datagrams to it, and therefore this wheel will not hold your session alive.
Object Methods
$wheel->put( LIST )
Returns the total number of bytes sent in this call, which may not match the number of bytes you passed in for payloads due to send(2) semantics. Takes a list of hashrefs with the following useful keys in them:
- payload
-
The actual data you wish to send in the packet.
- addr
- port
-
Specify a destination IP address and port for this specific packet. Optional if you specified a PeerAddr and PeerPort in the wheel constructor; Required if you did not.
Events
InputEvent
- ARG0
-
Contains a hashref with the following keys:
- addr
- port
-
Specifies the address and port from which we received this datagram.
- payload
-
The actual contents of the datagram.
- ARG1
-
The wheel id for the wheel that fired this event.
UPCOMING FEATURES
CFEDDE would like to see filter support in the UDP wheel... I would love to have a piece of pie. Let's see who gets what they want first.
IPV6 support.
TTL changing support.
SEE ALSO
POE
AUTHOR
Jonathan Steinert <hachi@cpan.org>
COPYRIGHT AND LICENSE
Copyright (C) 2006 by Jonathan Steinert... or Six Apart... I don't know who owns me when I'm at home. Oh well.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.