#pragma once #include <string.h> #include <HPSocket.h> #include <iostream> #pragma comment(lib,"Ws2_32.lib") using namespace std; char* TCHAR2char(const TCHAR* STR) { //�����ַ����ij��� int size = WideCharToMultiByte(CP_ACP, 0, STR, -1, NULL, 0, NULL, FALSE); //����һ�����ֽڵ��ַ������� char* str = new char[sizeof(char) * size]; //��STRת��str WideCharToMultiByte(CP_ACP, 0, STR, -1, str, size, NULL, FALSE); return str; } TCHAR* char2TCAHR(char* str) { int size = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); TCHAR* retStr = new TCHAR[size * sizeof(TCHAR)]; MultiByteToWideChar(CP_ACP, 0, str, -1, retStr, size); return retStr; } bool GetIp(char* ip) { char szText[256]; //��ȡ������������ int iRet; iRet = gethostname(szText, 256); int a = WSAGetLastError(); if (iRet != 0) { printf("gethostname() Failed!"); return FALSE; } //ͨ����������ȡ����ַ��Ϣ HOSTENT* host = gethostbyname(szText); if (NULL == host) { printf("gethostbyname() Failed!"); return false; } in_addr PcAddr; for (int i = 0;; i++) { char* p = host->h_addr_list[i]; if (NULL == p) { break; } memcpy(&(PcAddr.S_un.S_addr), p, host->h_length); char* szIP = ::inet_ntoa(PcAddr); sprintf(ip, "%s", szIP); } return true; } class ServerListenerImpl : public ITcpServerListener { public: // 5. process network events virtual EnHandleResult OnPrepareListen(ITcpServer* pSender, SOCKET soListen); virtual EnHandleResult OnAccept(ITcpServer* pSender, CONNID dwConnID, UINT_PTR soClient); virtual EnHandleResult OnHandShake(ITcpServer* pSender, CONNID dwConnID); virtual EnHandleResult OnReceive(ITcpServer* pSender, CONNID dwConnID, int iLength); virtual EnHandleResult OnReceive(ITcpServer* pSender, CONNID dwConnID, const BYTE* pData, int iLength); virtual EnHandleResult OnSend(ITcpServer* pSender, CONNID dwConnID, const BYTE* pData, int iLength); virtual EnHandleResult OnClose(ITcpServer* pSender, CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode); virtual EnHandleResult OnShutdown(ITcpServer* pSender); }; EnHandleResult ServerListenerImpl::OnPrepareListen(ITcpServer* pSender, SOCKET soListen) { return EnHandleResult(); } EnHandleResult ServerListenerImpl::OnAccept(ITcpServer* pSender, CONNID dwConnID, UINT_PTR soClient) { return EnHandleResult(); } EnHandleResult ServerListenerImpl::OnReceive(ITcpServer* pSender, CONNID dwConnID, int iLength) { return EnHandleResult(); } EnHandleResult ServerListenerImpl::OnSend(ITcpServer* pSender, CONNID dwConnID, const BYTE* pData, int iLength) { return EnHandleResult(); } EnHandleResult ServerListenerImpl::OnShutdown(ITcpServer* pSender) { return EnHandleResult(); }