64,642
社区成员
发帖
与我相关
我的任务
分享
if(!initSockDll())
{
return FALSE;
}
m_hParentWnd = hParentWnd;
m_socketListen = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED);
if (SOCKET_ERROR == m_socketListen)
{
return FALSE;
}
if(bind(m_socketListen,(const sockaddr*)&sockin,sizeof(sockin))==SOCKET_ERROR)
{
StopServer();
return FALSE;
}
//3.listen
if(listen(m_socketListen,SOMAXCONN)==SOCKET_ERROR)
{
StopServer();
return FALSE;
}
//创建完成端口
m_hCompletionPort = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);
if (INVALID_HANDLE_VALUE == m_hCompletionPort)
{
StopServer();
return FALSE;
}
CreateIoCompletionPort((HANDLE)m_socketListen, m_hCompletionPort, (ULONG_PTR)&m_socketListen, 0);//关联套接字
if (!PostAccept())
{
StopServer();
return FALSE;
}
SYSTEM_INFO sysInfo;
int nThreadNum;
HANDLE hThread;
GetSystemInfo(&sysInfo);
nThreadNum = sysInfo.dwNumberOfProcessors * 2 + 2;
for (int i=0;i<nThreadNum;i++)
{
hThread = CreateThread(NULL, 0, ThreadWatch, this, CREATE_SUSPENDED, NULL);
if (hThread)
{
Sleep(20);
ResumeThread(hThread);
CloseHandle(hThread);
}
}