[Melbourne-pm] Handling UDP packets via IO::Socket::INET in a sane manner.

Steven Haigh netwiz at crc.id.au
Mon Nov 30 18:00:18 PST 2009


On 30/11/2009, at 11:01 PM, Daniel Pittman wrote:
> You didn't note how you were doing the packet receive and send operations;
> traditionally, I would have expect this to work with the recv and sendto calls
> as normal:
> 
> use Socket;
> use IO::Socket::INET;
> my $s = IO::Socket::INET->new(LocalPort => 9000, Proto => 'udp') or die;
> my $buf;
> 
> my $dst = sockaddr_in(10000, inat_aton('192.168.1.1'));
> 
> while (1) {
>    $buf = undef;
>    $s->recv($buf, 65535) or last;
>    $s->send($buf, undef, $dst) or die "sendto: $!";
> }

Thanks for this Daniel, I've rewritten a lot of the socket code to sometime that seems to do what I want on the UDP side now - however I'm having some issues with (what is probably the SIP packet data) getting a response from the SIP registrar. I'm not 100% sure why - as it seems that the packet out is identical apart from addresses - but it's probably something simple and stupid that I've been blind too! ;)

I've put a copy up at http://www.crc.id.au/files/sip-filter.pl in case anyone would like to have a browse and help me hack away to get something workable.

--
Steven Haigh

Email: netwiz at crc.id.au
Web: http://www.crc.id.au
Phone: (03) 9001 6090 - 0412 935 897






More information about the Melbourne-pm mailing list