Exemplo n.º 1
0
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;
}
Exemplo n.º 2
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 );
}