LRESULT KPortServer::Run()
{
bool bE = false;
WSADATA wsData;
#define BUF_LEN 20
char szMsgBuf[BUF_LEN + 1];
sockaddr_in addrClient;
SYSTEMTIME sysTime;
bool bResult = true;
WSAStartup(MAKEWORD(2, 2), &wsData);
KServer::Init();
KServer::ResetSocket();
fprintf(stdout, "Waitting for client:/n");
while (true)
{
SOCKET skClient = INVALID_SOCKET;
PROCESS_ERROR(INVALID_SOCKET != (skClient = StartAccepting()));
addrClient = GetClientAddress();
GetLocalTime(&sysTime);
sprintf(szMsgBuf, "%d/0", ntohs(addrClient.sin_port));
send(skClient, szMsgBuf, strlen(szMsgBuf), !MSG_DONTROUTE);
fprintf(stdout, "%d:%d:%d:%d/tClient %s %d connected!/n",
sysTime.wHour, sysTime.wMinute, sysTime.wSecond, sysTime.wMilliseconds,
inet_ntoa(addrClient.sin_addr), ntohs(addrClient.sin_port));
printf("%s:/tSocket closed!/n", ::GetSystemTimeAsString());
shutdown(skClient, SD_RECEIVE);
closesocket(skClient);
}
bE = true;
Exit0:
WSACleanup();
return bE;
#undef BUF_LEN
}