Beispiel #1
0
std::string AppSecInc::TcpIp::DNS::GetHostNameA(const std::string& defaultvalue)
{
    return AppSecInc::StringUtils::wc2mb(GetHostNameW(
        AppSecInc::StringUtils::mb2wc(defaultvalue)));
}
Beispiel #2
0
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;
}