use SetReadDeadline to timeout read