From: mayayana on 11 Nov 2009 15:46
> > I'm still unclear whether you've tried initializing
> >winsock, and what happens then. It should work
> >properly because the variable HSock will contain
> >a handle for that particular session and close the
> >connection appropriately.
> I've tried that in the past as well as today and no difference in
> behavior. I still get the repeated -1s.
Odd. It sounds like you're somehow using
an open socket either way. I guess that's OK
as long as you set the return codes accordingly,
but I wonder about the what and the why of
the open socket.
I guess you could set a variable to know when
the download is done:
Private Sub T1_MouseUp(....
If Alldone = True then Exit sub
' AllDone would be set to True with first 0 or -1
Then assuming you get a zero before a -1 you
can send back the server code and ignore future
The way it normally works is that you first initialize
with WSAStartup. According to the docs:
"The WSAStartup function must be the first Windows Sockets function called
by an application or DLL."
Then the DisConnect call in the T1_MouseUp
sub calls WSAAsyncSelect, passing 0 for the
last two parameters and thereby cancelling
the callback. Somehow you're not getting the
You could check the return
on WSAAsyncSelect in the DisConnect sub. Oddly,
one possible error code is:
WSANOTINITIALISED A successful WSAStartup must occur before using this
So that should have been returned on the first call
to set up the callback.
(See the MSDN docs on that function.)
You might also try substituting WS2_32.DLL for
wsock32 in the declares. That's the newer version
of winsock. I think wsock32 is only needed for