It sounds like the key is to get your reading and your parsing/logic separated. Once that is done, you can easily swap out different reading methods and see what works best.
One way to do it single threaded is to put socket/buffer pairs into a hash, and call a function to fill those buffers. Once one of the buffers gets to a usable point (such as containing a newline), you can split/regex/substr it off the buffer and do what needs doing.
Your filler function can dump all the sockets into a select and see which ones can be read. Read (once!) only those that are readable, and append to the associated buffer.
Returning a list of only the socket (keys) which changed during that read cycle might be handy to save CPU.
In reply to Re: non-blocking socket client?
by SuicideJunkie
in thread non-blocking socket client?
by ethrbunny
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |