www.pudn.com > using IOCP.zip > main.cpp
// Written by Oz Ben Eliezer // o_be@hotmail.com // September, 2000 #define _WIN32_WINNT 0x0500 #include#include "callback.h" #include "client_0.h" #include "general.h" #define NUM_CLIENTS 1000 // You probably would make this a // configurable value #define TCP_PORT 10 #define CHECK_CYCLE 10000 // Check for static connections every... SOCKET listener; CClient_0 *pClients[NUM_CLIENTS]; HANDLE dieEvent; char *temptemp; int CClient::nID; int main() { int i; // Initialize dieEvent = CreateEvent(0, true, false, 0); CClient::nID = 0; WSADATA wd = {0}; err(0 != WSAStartup(MAKEWORD(2, 0), &wd), "\nWSAStartup(..) failed."); SOCKADDR_IN addr; err(INVALID_SOCKET == (listener = socket(AF_INET, SOCK_STREAM, 0)), "\nCan't create listener socket."); addr.sin_family = AF_INET; addr.sin_addr.s_addr = INADDR_ANY; addr.sin_port = htons((short)TCP_PORT); err(0 != bind(listener, (SOCKADDR *)&addr, sizeof(addr)), "\nbind(..) failed."); err(0 != listen(listener, 200), "\nlisten(..) failed."); err(0 == BindIoCompletionCallback((HANDLE)listener, DoneIO, 0), "\nBindIoCompletionCallback failed."); for (i = 0; i < NUM_CLIENTS; i++) { pClients[i] = new CClient_0(); pClients[i]->Init(); } while (WAIT_TIMEOUT == WaitForSingleObject(dieEvent, CHECK_CYCLE)) { for (i = 0; i < NUM_CLIENTS; i++) pClients[i]->Maintenance(); } // Done for (i = 0; i < NUM_CLIENTS; i++) { pClients[i]->Close(); delete pClients[i]; } closesocket(listener); CloseHandle(dieEvent); return 0; }