#pragma once #include #include #include #pragma comment(lib,"Ws2_32.lib") using namespace std; char* TCHAR2char(const TCHAR* STR) { //返回字符串的长度 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(); }