Re: Loop generates never-ending sockets and threads, need help
debugging
On Feb 5, 2:15 pm, Branimir Maksimovic <bm...@hotmail.com> wrote:
Kurt wrote:
Hi all,
I have a client/server project written by a hired contractor, but it's =
got a fairly big bug when it comes to dealing with thread and sockets. It c=
reates threads but never closes the handle to them, thus causing the server=
to accumulate hundreds of thousands of open handles in a day or so. The cl=
ient and server both share similar code, but I'll just post the server-side=
..
....
while (blStarted) {
SOCKET sa = accept(socCommand, 0, 0); =
// block for connection request
if (sa ==INVALID_SOCKET) {
break;
}
void **params = (void **) malloc(sizeof(void*)=
*2);
SOCKET *s = new SOCKET;
*s = sa;
params[0] = (void*)this;
params[1] = (void*)s;
DWORD dwGenericThread;
//unsigned int iGenericThread;
HANDLE hWorkerThread = CreateThread(NULL, 0, t=
ransferCommandWorkerThread, params, 0, &dwGenericThread);
//HANDLE hWorkerThread = (HANDLE)_beginthreade=
x(NULL, 0, transferCommandWorkerThread, params, 0, &iGenericThread);
//WaitForSingleObject(hWorkerThread, INFINITE);
//CloseHandle(hWorkerThread);
}
}
Hm, what happens if there are more than 1 pending connection requests?
This obviously doesn't work in case of Wait.... since than, no other
connection will be accepted till current client is processed...
Greets
I believe that may be the case as when I have one client transferring
data to the server, another client gets an error. I replaced the
clients with _beginthread() and am waiting for this current transfer
to finish, though I guess this would be a good opportunity to test out
the resume functionality. While on the subject of threads and sockets,
do you have any books to recommend?
Thanks,
Kurt