Well im gona investigate this time out you are sugesting, its quite posible

The reason for useing non-blocking sockets, my application has a Window (GUI), in which the message loop pumps messages to my window procedure or handler, so in essance setting to non blocking i've told the socket to inform my window handler of a FD_READ when data is waiting for me.

I'ts intregueing because the docs indacte to me, my window handler only recieves a FD_READ message when there is data waiting for it. It's why this seems strange. Because if there is data waiting for me, recv should return the number of bytes recieved, but is returning <= 0 values.