Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
PerlMonks + UDP

by Wiggins (Hermit)
on Feb 07, 2013 at 15:32 UTC ( #1017679=perlquestion: print w/replies, xml ) Need Help??
Wiggins has asked for the wisdom of the Perl Monks concerning the following question:

Monks; I have been away for some time on a forced excile to the land of Python; but have returned to the fold.

I am in need of guidance for the following. I am trying to use only core packages. I have taken the from "Advanced Perl Programming" (vol 1) and have grafted in a 'workproc' mechanism ala Xwindows. Now I need to be able to handle UDP packetes in the event loop as well as TCP. I am hoping someone has done that and would be willing to share.

There are some portions of the code I don't understand. The use of a data structure 'g-pkg'; and the following

#New Server my ($pkg, $proto, $my_host, $my_port, $login_proc) = @_; and sub set_event_handler { shift unless ref($_[0]); # shift if first arg is package name my ($handle, %args) = @_;
The 1st looks like all new_server call are always OO,
but set_event_handler() may or may not be associated with an Object

As I continue to look at this ( code, the more I see what seems to be a single connection only functionality.

sub _new_client { my $sock = $main_socket;
That is picking a '$sock' value from a global scalar ($main_socket) that is set only from
$main_socket = IO::Socket::INET->new (
which is the last socket created. I am thinking that this may not be suited for multiple simultanious connections. If you look at 'g_login_proc', it is also a global singleton which is overwritten with each new call to 'new_server'.

So what are the recommendations for a robust communication and event dispatcher? (low learning curve is appreciated.

It is always better to have seen your target for yourself, rather than depend upon someone else's description.

Replies are listed 'Best First'.
Re: + UDP
by kcott (Chancellor) on Feb 07, 2013 at 18:52 UTC

    G'day Wiggins,

    This book was printed about 16 years ago and, as such, is now rather dated. Perl 5.4 was the current version around that time (see perlhist for specifics).

    I had a quick scan through Chapter 13 (I assume that's what you're referring to) but neither g-pkg nor #New Server ... leapt out at me. Could you reference their page numbers and also give some indication of what you're having trouble understanding.

    I did find the code for set_event_handler() (page 214). Most of the examples of its usage (e.g. connect(), disconnect(), send_later()) do not have a package name as the first argument. However, on page 205, you will find the call:

    Msg->set_event_handler(\*STDIN, "read" => \&kbd_input);

    I'm not sure if that helps. Again, some indication of what you're having trouble understanding would help in providing a better answer.

    -- Ken

      Pieces of the code are in chapter 12 (Networking with Sockets), but the entire module that I am working with is in:

      It is always better to have seen your target for yourself, rather than depend upon someone else's description.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1017679]
Approved by igelkott
[Lady_Aleena]: pcre stands for 'Perl Compatible Regular Expressions'.
[erix]: ok, ok, I thought you meant the engine
[perldigious]: Tanktalus: Ha, understandable, that does make it harder when you don't want to move. I assume you are looking at remote work from home jobs too?
[Tanktalus]: yeah, I'm looking at a lot of remote work - I've been working from home since 2002, so I know how to do the work from remote, I just need a new employer ;)
[Lady_Aleena]: Discipulus, I wouldn't know how to get a script to do what the greps do in one line.
[perldigious]: Even working for a large software engineering contractor that's willing to do remote could be an option. The fortune 500 company at $job-- I worked for had quite a lot of that work to hire out to large contractors.
[perldigious]: The pay and benifits leave a lot to be desired though, or so I've heard...
[Lady_Aleena]: Discipulus, grep doesn't have an option to go recursively through a directory as far as I know.
[Your Mother]: I work remotely and my pay and benefits are quite nice. :P
[choroba]: Lady_Aleena Perl's grep is not related to directories

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (14)
As of 2017-05-23 19:27 GMT
Find Nodes?
    Voting Booth?