WINDOWS API중 NotifyAddrChange() API를 이용해서 특정이벤트에 대한 Lock을 걸어서 대기한다.
즉 쓰레드로 아래 루틴을 수행시켜야 한다.
ST_Void* SPK_HTTP_Interface::checkNetworkChanged(ST_Void* arg)
{
while ( 1 )
{
OVERLAPPED overlap;
memset(&overlap, 0x00, sizeof(OVERLAPPED));
DWORD ret=0;
HANDLE hand = NULL;
overlap.hEvent = WSACreateEvent();
ret = NotifyAddrChange(&hand, &overlap);
if (ret != NO_ERROR)
{
if (WSAGetLastError() != WSA_IO_PENDING)
{
return 0;
}
}
if ( WaitForSingleObject(overlap.hEvent, INFINITE) == WAIT_OBJECT_0 )
{
RD_NotifyNetworkChanged();
return 0;
}
} // end while
}