服务端程序进程:while (1)
    {
int           iAddrSize;
struct sockaddr_in client;
        iAddrSize = sizeof(client);
SOCKET socktmp;
        socktmp = accept(TerminListen, (struct sockaddr *)&client,
&iAddrSize);        
        if (socktmp == INVALID_SOCKET)
        {   
int errorid =  WSAGetLastError();
            printf("接受分发进程连接错误。Error ID = %d\n",errorid);
            if(errorid == WSAENOTSOCK )
{
exit(0);
}
else
continue;
        }
else
{
::setsockopt(socktmp,SOL_SOCKET,SO_RCVBUF,(char *)&bufsize,4);
::setsockopt(socktmp,SOL_SOCKET,SO_SNDBUF,(char *)&bufsize,4); CurrTerminData=0;
while((TerminUsedNum[CurrTerminData])&&(CurrTerminData<MAX_TERMINATE))
CurrTerminData++; TerminSock[CurrTerminData] = socktmp;
TerminUsedNum[CurrTerminData]= true;
hThread = CreateThread(NULL, 0, TerminateThread, 
(LPVOID)CurrTerminData, 0, &dwThreadId);
if (hThread == NULL)
{
printf("创建数据接收线程出错。Error ID = %d\n", GetLastError());
break;
}
CloseHandle(hThread);//ckl f
::Sleep(200);//延时防止阻塞?ckl
printf("Accept Terminate connection ! and Terminate ID =%d \n",CurrTerminData);
}
}
return 0;
}while (1)
    {
int           iAddrSize;
struct sockaddr_in client;
        iAddrSize = sizeof(client);
        socktmp = accept(IVRListen, (struct sockaddr *)&client,&iAddrSize);        
        if (socktmp == INVALID_SOCKET)
        {   
int errorid =  WSAGetLastError();
            printf("接受连接错误。Error ID = %d\n",errorid);
            if(errorid == WSAENOTSOCK )
{
exit(0);
}
else
continue;
        }
if(IVRstatus == false)
{
IVRSock = socktmp;
::setsockopt(IVRSock,SOL_SOCKET,SO_RCVBUF,(char *)&bufsize,4);
::setsockopt(IVRSock,SOL_SOCKET,SO_SNDBUF,(char *)&bufsize,4);
hThread = CreateThread(NULL, 0, IVRThread, 
(LPVOID)0, 0, &dwThreadId);
if (hThread == NULL)
{
printf("创建数据接收线程出错。Error ID = %d\n", GetLastError());
break;
}
CloseHandle(hThread);
printf("Accept aA \n");
IVRstatus = true;
}
else
closesocket(socktmp);
    }