Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Server hold udp packets in reciev queue

by throwaway (Novice)
on Jul 11, 2020 at 02:54 UTC ( [id://11119173]=perlquestion: print w/replies, xml ) Need Help??

throwaway has asked for the wisdom of the Perl Monks concerning the following question:

I am working through a book where it uses perl to learn network programming. With a client written in a similar manner as to this server, the udp datagram is a little bit of text. When I run the program and send the packet it just sits in the receiv queue. I see this using netstat on all listening ports does anyone know how to not have it hold them in there and just process them?
#! /usr/bin/perl -w use strict; use Socket; use constant SIMPLE_UDP_PORT => 4001; use constant MAX_RECV_LEN => 1500; use constant LOCAL_INETNAME => 'localhost'; my $trans_serv = getprotobyname('udp'); my $local_host = pack "C4", split('\.', "127.0.0.1"); my $local_port = shift || SIMPLE_UDP_PORT; my $local_addr = sockaddr_in($local_port, INADDR_ANY); socket(UDP_SOCK, PF_INET, SOCK_DGRAM, $trans_serv); bind(UDP_SOCK, $local_addr); my $data; while(1) { my $from_who = recv(UDP_SOCK, $data, MAX_RECV_LEN, 0); if ($from_who) { my($the_port, $the_ip) = sockaddr_in($from_who); warn 'Received from ', inet_ntoa($the_ip), ": $data\n"; } else { warn "Problem with recv: $!\n"; } }

2020-07-14 Athanasius added code tags.

Replies are listed 'Best First'.
Re: Server hold udp packets in reciev queue
by haukex (Archbishop) on Jul 11, 2020 at 06:25 UTC

    Please use <code> tags to format your code (and any data), see How do I post a question effectively?

    When I run the program and send the packet it just sits in the receiv queue.

    I can't reproduce this with the code you showed. When I run your code and send it a UDP packet via echo "Hello" | socat - UDP-DATAGRAM:127.0.0.1:4001, your code prints Received from 127.0.0.1: Hello as I'd expect. Could you show us how to reproduce the issue you're having with a Short, Self-Contained, Correct Example? Perhaps it's in the client, which you haven't shown.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://11119173]
Approved by marto
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (4)
As of 2024-04-24 19:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found