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

Re^2: Non-blocking socket read on Windows

by spurperl (Priest)
on Feb 13, 2006 at 17:53 UTC ( #529877=note: print w/ replies, xml ) Need Help??


in reply to Re: Non-blocking socket read on Windows
in thread Non-blocking socket read on Windows

This solution works admirably !

After setting the ioctl() command you're suggesting on my socket, I'm reading from it using sysread(), which behaves in a non-blocking way, returning the amount of bytes it has actually read. This overall works much faster than my looping approach, especially for longer messages.

Although this is probably off-topic, it's curious how the "magic value" of 0x8004667E is created. The "macro" for non-blocking IO in ioctl() is FIONBIO, and its calculation is done thus:

IOC_IN = 0x80000000h; FIONBIO = IOC_IN + 4 * 65536 + ORD ('f') * 256 + 126;
I wonder what is the rationale behind this ? Can someone explain how these things work ? Is it portable to just plunge the magic value in my code ?


Comment on Re^2: Non-blocking socket read on Windows
Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (18)
As of 2015-07-06 20:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (83 votes), past polls