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

So, for some fun and knowledge, I've decided to build a talker in perl, using Socket for the socket interface. I was scouting around here for some examples and found a few, mainly Tkil's perl-chat example. So, now I have a good working, simple example. However, another fun experiment I've decided to incorporate into this project is OO :)

so anyways, while I basically understand the flow of that example, I was wondering if there was anywhere I could turn to for more extension documentation, and perhaps a few more examples of the four arg select and vec().


Thanks much, brad

Replies are listed 'Best First'.
Re: Multipe Socket Connections
by Fastolfe (Vicar) on Sep 18, 2000 at 22:10 UTC
    Check out IO::Socket and IO::Select and I'd recommend familiarizing yourself with non-blocking sockets. In the past I've written some pretty heavy apps managing dozens of open sockets simultaneously and have thoroughally enjoyed the OO representation provided by these interfaces.

    I am curious though if anyone has written up a stock module built for managing non-blocking sockets? Some base module that we can inherit from or at least with an event loop to do our polling/selects for us would be nice. I've rolled my own in the past and have just been using the same module between all of my various projects that use similar code, since I never found anything out there that did this at the time, but that was a while ago...

Re: Multipe Socket Connections
by merlyn (Sage) on Sep 18, 2000 at 22:11 UTC
Re: Multipe Socket Connections
by reyjrar (Hermit) on Sep 18, 2000 at 23:40 UTC
    I'll look more into the IO::Select module, but that won't satiate my curiousity about the four arg select and vec functions :) I mean sure, its great to use modules, but if I know how these two functions work, I might accidentally think of something a bit different than anyone else has thought of and then release my own modules :P hehe.. not likely, but its nice to know how these things work..
    After all, I code to learn, and I learn what intrigues me :)
    -brad..
      As always, there are two reasons I recommend modules:
      • You can usually get the job done faster
      • When you are curious about how it works, it's all open source! You can find out!

      -- Randal L. Schwartz, Perl hacker

        I totally agree with you, that's why I love perl so much, and I did take a look at the IO::Select module source, however, it also uses the select and vec functions the same way I saw them used in the perl-chat example. and while the module would save me time, and alot of grief, there are no deadlines and I'm a masochist :P so its all good.. what I'd really like to know, is not "how to deal with multiple connections" but, I guess some more examples or a new explanation of the 4 arg select, and vec(). I might look at these two functions, and just go, "well hot damn, I could use that for ______", something using IO::Select won't totally give me :P
        Basically, I have the concept down, multiple file handles that you can read/write to, that are being "watched" and you form them using the "vec()" function, but I can't translate that into code and vice versa for some reason.. I just need a different look at it I guess.

        and once again, thanks for the great help, this site rules!

        -brad..