Thanks for your repy! So, you showed me how to make a TCP socket at 0.0.0.0 port 9999. That helps, but I was wondering how I would use IO::Async or AnyEvent or some other event driven module to automagically have data echoed back or printed to the screen when something gets sent to the socket. In particular, I wanted to use a RAW socket, and I have not seen a lot of documentation on using raw sockets. Here is some pseudocode:
use IO::Socket::INET; my $server = new IO::Socket::INET(LocalAddr => '0.0.0.0', Proto => 'ra +w'); use My::MagicEventBasedModule; my $my_event_loop_handler_thing = new My::MagicEventBasedModule ( file_handler => $server, when_there_is_data_to_be_read => sub{ my ($data, $source_address, $source_port) = @_; print $data; $server->write("You've got data!"); } ); #maybe you have to "run" it like a thread in Python: $my_event_loop_handler_thing->run();
Something like that would be ideal. I thought IO::Async or AnyEvent would make for a nice substitute for the fictitious My::MagicEventBasedModule. As you can see in the pseudocode, I associated a subroutine with a point at which $my_event_loop_handler_thing detects the filehandler to have data that could be read. In my pseudocode, the subroutine is passed the data along with the source address and port that sent it. That would be nice, but all I really need is the data. The raw IP packet would contain all the information I would need. Actually I would just encode it in hex and pass it over XMPP to the other computer, which would decode it and feed it to its raw socket at 0.0.0.0. Then the process would start again as the other computer replies. For now, I just need to know how to use an event based module to print raw data from a raw socket to the screen every time data is sent to the socket. The reason I want it to be event based is so I am not explicitly assigning threads and/or processes to constantly check the socket and the XMPP client for new data and messages respectively.

In reply to Re^2: Printing data from a raw socket to the screen and/or echoing it back via event driven means by Feynman
in thread Printing data from a raw socket to the screen and/or echoing it back via event driven means by Feynman

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.