Курсовая работа: Розробка програмного забезпечення системи збору даних про хід та параметри технологічного процесу
ClientThread, (LPVOID)iNumClients, 0, &iThreadId);
sockInfo[iNumClients].time = time(NULL);
iNumClients ++ ;
LeaveCriticalSection (&cs);
}
else
{
LeaveCriticalSection (&cs);
shutdown(sockAccept, SD_BOTH);
closesocket(sockAccept);
}
}
return 0;
Алгоритм контролю часу клієнтів працює в залежності від типу клієнта. Якщо це КОМ, то timeout дорівнює 1 хвилині, інакше це 10 хвилин.
while (1)
{
dwWaitState = WaitForSingleObject(hEvent, timeToSleep);
if (dwWaitState == WAIT_OBJECT_0)
break;
EnterCriticalSection (&cs);
for (i = 0; i< iNumClients; i++)
{
if ((sockInfo[i].typeSender == 5) || (sockInfo[i].typeSender == 0))
{
if ((time(NULL) - sockInfo[i].time)>600)
{
DeleteSockInfo(i , 1);
}
}