Your right I made an assumption about sysread clearing the data in the example.
Clearing $data and $rc inbetween had no effect.
Yes, both the blocking short example and the non-blocking full version are behaving the same way on windows as the sysread result is greater than zero.
I checked the simple client and larger version on HP-UX with the same behavior. I also added enough code to the example to send an ack back so I don't think it is a resend.