这一段程序中报警的运动条件是什么、、、急求

DWORD WINAPI ThreadWarning(LPVOID pM)

{

printf("子线程的线程ID号为:%d\n子线程输出Hello 3\n", GetCurrentThreadId());

//初始化WSA  
WORD sockVersion = MAKEWORD(2,2);  
WSADATA wsaData;  
if(WSAStartup(sockVersion, &wsaData)!=0)  
{  
    return 0;  
} 
//while(1)
//{
    //创建套接字  
    SOCKET warlisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);  
    //unsigned long ul=1;
    //int ret1=ioctlsocket(slisten, FIONBIO, (unsigned long *)&ul);

    if(warlisten == INVALID_SOCKET)  
    {  
        printf("socket error !");  
        return 0;  
    }  
    //绑定IP和端口  
    sockaddr_in sin;  
    sin.sin_family = AF_INET;  
    sin.sin_port = htons(8882);//端口8880                                               ////////////////////////////////////
    sin.sin_addr.S_un.S_addr = INADDR_ANY;   
    if(bind(warlisten, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)  
    {  
        printf("bind error !");  
    }  

    //开始监听  
    if(listen(warlisten, 5) == SOCKET_ERROR)  
    {  
        printf("listen error !");  
        return 0;  
    }  

    //循环接收数据  
    SOCKET warClient;  
    sockaddr_in remoteAddr;  
    int nAddrlen = sizeof(remoteAddr);  

    printf("warnig等待连接...\n");    
    char sendData[1];  
    do  
    {  
        warClient = accept(warlisten, (SOCKADDR *)&remoteAddr, &nAddrlen);
        char a=warning;
        sendData[0]=a;
        //if(a!=0)
        send(warClient, sendData, 1, 0);
        printf("warnig发送结束...\n");  
        _sleep(1000);
        warClient = INVALID_SOCKET;
        warning=0;
    }
    while(warClient == INVALID_SOCKET);  


    closesocket(warlisten);  
//}
WSACleanup();  
return 0;    

}

这段代码只是tcp网络服务端的初始化代码,当有客户端连接,服务端就会发回一个字节的值(具体值得查变量warnning, 贴的代码看不出).