std::string AppSecInc::TcpIp::DNS::GetHostNameA(const std::string& defaultvalue) { return AppSecInc::StringUtils::wc2mb(GetHostNameW( AppSecInc::StringUtils::mb2wc(defaultvalue))); }
int StartServer(HWND hWnd,serverStruct *server) { sockaddr_in sAddr; char strPortNo[10]=""; WORD wVersionRequested = MAKEWORD(2, 2); WSADATA wsaData; BOOLEAN bOptVal = TRUE; int wsaError=0; int ipSize=INET_ADDRSTRLEN; TCHAR hostName[50]; DisplayError(NULL,TEXT(__FUNCSIG__),0,LOG,NOTICE); memset( &sAddr, 0, sizeof (sAddr)); if ((WSAStartup(wVersionRequested, &wsaData) != 0) || //not correct Winsock version (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)) { WSACleanup(); wsaError=WSAGetLastError(); DisplayError(NULL,TEXT("Error in StartServer - WSA Start-up "),wsaError,ALL,ERRORFOUND); return wsaError; } _tcscpy(hostName,TEXT("")); if(GetHostNameW(hostName,50)!=SOCKET_ERROR) { TCHAR hostNameEXT[50]; StringCbPrintf(hostNameEXT,100,_T("Server on hostname: %s"),hostName); DisplayError(NULL,hostNameEXT,0,LOG,NOTICE); } else DisplayError(NULL,TEXT("Can't get host"),WSAGetLastError(),LOG|POPMSG,ERRORFOUND); WSAStringToAddress(server->ipAddress,AF_INET,NULL,(LPSOCKADDR) &sAddr,&ipSize); sAddr.sin_port = htons(server->portNo); server->inSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(server->inSocket==INVALID_SOCKET ) { wsaError=WSAGetLastError(); DisplayError(NULL,TEXT("Socket Error"),server->inSocket,ALL,ERRORFOUND); return wsaError; } if ( WSAAsyncSelect( server->inSocket,hWnd,WM_SERVER_SOCKET,FD_ACCEPT | FD_READ | FD_CLOSE)== SOCKET_ERROR) { wsaError=WSAGetLastError(); // in case it changes after close socket closesocket(server->inSocket); WSACleanup(); DisplayError(NULL,TEXT("WSAAsyncSelect Error"),wsaError,ALL,ERRORFOUND); return wsaError; } if(setsockopt(server->inSocket, SOL_SOCKET, SO_REUSEADDR, (char *) &bOptVal, sizeof(int)) == SOCKET_ERROR) { wsaError=WSAGetLastError(); DisplayError(NULL,TEXT("SetSockOpt Error"),WSAGetLastError(),ALL,ERRORFOUND); return wsaError; } if ( bind(server->inSocket, (SOCKADDR *) &sAddr, sizeof(sAddr)) == SOCKET_ERROR ) { wsaError=WSAGetLastError(); DisplayError(NULL,TEXT("Bind Error"),wsaError,ALL,ERRORFOUND); return wsaError; } if (listen(server->inSocket, server->noConnections) == SOCKET_ERROR) { wsaError=WSAGetLastError(); DisplayError(NULL,TEXT("Listen Error"),wsaError,ALL,ERRORFOUND); return wsaError; } server->isConnected=(wsaError==0); return wsaError; }