Allow certain IP addresses to run a C++ program
It took me a while to figure out what the code was trying to do.  I guess that http://www.myWebServer.com/ip/index.php serves a purpose similar to http://www.whatismyip.com, echoing the HTTP client's IP address.  That is better than just enumerating the IP addresses on the client machine's interfaces, as it ensures that you pick an address that is actually routable.

Like all DRM schemes, this one is crackable too.  One simple workaround is to use a transparent HTTP proxy that intercepts the call-home message and fakes a response.  Using HTTPS with server certificate validation would help prevent that man-in-the-middle attack.

The parseAllowableIPs() function is misnamed.  It's not just parsing — it's also fetching, reading, and making an allow/deny decision.  A more appropriate name would be isClientIPAuthorized().

compareIPs() is doing more than its fair share.  Instead of returning a std::string, getIPlist() should also split the text into a std::vector&lt;std::string&gt;.  There should also be a getMyIP() function.  Then, compareIPs() would be a simple verification of whether an item is in a list.

In summary, the outline should be more like:

bool isClientIPAuthorized()
{
    std::string me = getMyIP();
    std::vector&lt;std::string&gt; allowed = getAllowableIPs();
    return std::find(allowed.begin(), allowed.end(), me) != allowed.end();
}

int main()
{
    //... blah blah blah

    // If not an authorized IP, just exit the game.
    if (!isClientIPAuthorized())
    {
        MySQL__disconnect();
        exit(588924);
    }
}


However, I'd go a step further.  The dotted-quad parsing code in compareIPs() has some minor issues, such as superfluous pointer dereferencing.  (Note that it would be better to write U++; rather than *U++;, even though the effect is the same.)  It would be better to avoid reinventing the wheel, and using a standard IP address parsing routine.  (It's such a common task, a few minutes with Google and MSDN is worth it.)  There's the Winsock function inet_aton(), which parses a IPv4 dotted-quad address into a long, and the newer InetPton() that also handle IPv6.  So, getMyIP() and getAllowableIPs() should probably return long and std::vector&lt;long&gt;, respectively, instead of strings.