int CUdpIocp::Init( int ServerSocketSize, int WorkerNum ) { //初始化ID int i; m_ServerSocketSize = ServerSocketSize; m_pSocketArray = new CUdpSocket* [ServerSocketSize]; for( i = 0; i<ServerSocketSize; i++ ) m_pSocketArray[i] = NULL; //创建外部接收线程 CreateReceiveWorkerThread(WorkerNum); return 0; }
void CIOCPort::Init(int serversocksize, int clientsocksize, int workernum) { m_SocketArraySize = serversocksize; m_ClientSockSize = clientsocksize; m_SockArray = new CIOCPSocket2* [serversocksize]; for(int i = 0; i<serversocksize; i++ ) { m_SockArray[i] = NULL; } m_SockArrayInActive = new CIOCPSocket2* [serversocksize]; for(int i = 0; i<serversocksize; i++ ) { m_SockArrayInActive[i] = NULL; } m_ClientSockArray = new CIOCPSocket2* [clientsocksize]; // 해당 서버가 클라이언트로서 다른 컴터에 붙는 소켓수 for(int i=0; i<clientsocksize; i++ ) { m_ClientSockArray[i] = NULL; } for(int i = 0; i<serversocksize; i++) m_SidList.push_back(i); InitializeCriticalSection( &g_critical ); CreateReceiveWorkerThread(workernum); CreateClientWorkerThread(); CreateSendWorkerThread(); m_PostOverlapped.hEvent = NULL; WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); }