Sending will only block if the buffers have gotten too full. So rather than sending non-blocking, just select with a 0 time-out. If select fails, then report that failure and don't send (instead of sending non-blocking and reporting that the attempt failed). Though I wonder if that could run into problems if the amount of data you are trying to send is in large chunks. I suspect the select mechanism means that instead of blocking the socket would either only send part of the data or would fail with something like EMSGSIZE (depending on the type of socket).

The usual way this type of thing is done is to have multiple objects that queue up read and write requests and then one select loop that reads/writes for any sockets that are ready for their queued requests. Having your server "lock up" waiting for a reply certainly sounds "not very elegant" to me.

- tye        


In reply to Re: nonblocking socket back to blocking (select) by tye
in thread nonblocking socket back to blocking by netrom

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.