服务端程序进程: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);
}
{
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);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货