Jump to content

Spike2

Inactive Member
  • Posts

    1
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by Spike2

  1. I know, old thread but very useful...

    ERROR:  Can not get public ip address

    Replace in game SRC config.cpp,  the Block "bool GetIPInfo()"  with this, an it will work

     

    bool GetIPInfo()
    {
    #ifndef __WIN32__
    	struct ifaddrs* ifaddrp = NULL;
    
    	if (0 != getifaddrs(&ifaddrp))
    		return false;
    
    	for( struct ifaddrs* ifap=ifaddrp ; NULL != ifap ; ifap = ifap->ifa_next )
    	{
    		struct sockaddr_in * sai = (struct sockaddr_in *) ifap->ifa_addr;
    
    		if (!ifap->ifa_netmask ||  // ignore if no netmask
    				sai->sin_addr.s_addr == 0 || // ignore if address is 0.0.0.0
    				sai->sin_addr.s_addr == 16777343) // ignore if address is 127.0.0.1
    			continue;
    #else
    	WSADATA wsa_data;
    	char host_name[100];
    	HOSTENT* host_ent;
    	int n = 0;
    
    	if (WSAStartup(0x0101, &wsa_data)) {
    		return false;
    	}
    
    	gethostname(host_name, sizeof(host_name));
    	host_ent = gethostbyname(host_name);
    	if (host_ent == NULL) {
    		return false;
    	}
    	for ( ; host_ent->h_addr_list[n] != NULL; ++n) {
    		struct sockaddr_in addr;
    		struct sockaddr_in* sai = &addr;
    		memcpy(&sai->sin_addr.s_addr, host_ent->h_addr_list[n], host_ent->h_length);
    #endif
    
    		char * netip = inet_ntoa(sai->sin_addr);
    
    		if (g_szPublicIP[0] == '0')
    		{
    			strlcpy(g_szPublicIP, netip, sizeof(g_szPublicIP));
    #ifndef __WIN32__
    			fprintf(stderr, "PUBLIC_IP: %s interface %sn", netip, ifap->ifa_name);
    #else
    			fprintf(stderr, "PUBLIC_IP: %sn", netip);
    #endif
    		}
    	}
    
    #ifndef __WIN32__
    	freeifaddrs( ifaddrp );
    #else
    	WSACleanup();
    #endif
    
    	if (g_szPublicIP[0] != '0')
    		return true;
    	else
    		return false;
    }

    hope it helps you ! 😉

×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.