Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: How can I determine the server is waiting for input in POE::Wheel::ReadWrite?

by Joost (Canon)
on Nov 15, 2009 at 21:27 UTC ( [id://807309]=note: print w/replies, xml ) Need Help??


in reply to How can I determine the server is waiting for input in POE::Wheel::ReadWrite?

As a simplification, you may want to think of the processing of network data the same way as reading a file while some other process is writing to it.

You cannot determine without some protocol when a "block" of data is complete. The common solutions to this problem are:

a) the above mentioned "end of block" marker. In the case of a line-based protocol, the newline character serves as an end-of-block marker. This is especially useful if its inefficient to know the length of a block in advance (usually, because the block is large and takes a long time to compute). And line-based protocols are just nice to read for humans, which can also be a big help in analyzing any problems.

b) prefix the block with its length. HTTP for instance provides a mechanism for this using the content-length header. Many binary protocols work the same way. When possible, this gives a few advantages over end-of-block markers; the client will know how much memory to allocate for the incoming data, and it can make it easier to pass the data on without any additional processing.

  • Comment on Re: How can I determine the server is waiting for input in POE::Wheel::ReadWrite?

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (2)
As of 2024-04-25 12:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found