std::string getGlobalIP()
{
WSADATA wsaData;
if(WSAStartup(MAKEWORD(2, 0), &wsaData) != 0)
return "Not found";
SOCKET s = socket(AF_INET, SOCK_STREAM, 0);
HOSTENT *host;
host = gethostbyname("www.whatismyip.com");
SOCKADDR_IN sin;
memset(&sin, 0, sizeof sin);
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = ((struct in_addr*)(host->h_addr))->s_addr;
sin.sin_port = htons(80);
if(connect(s, (struct sockaddr*)&sin, sizeof(sin)) != SOCKET_ERROR){
//std::cout << "Connected" << std::endl;
std::string request = "GET http://www.whatismyip.com/automation/n09230945.asp HTTP/1.1\r\nHost: www.whatismyip.com\r\n\r\n";
if(send(s, request.c_str(), request.length(), 0) != request.length())
std::cout << "Error sending request: " << WSAGetLastError() << std::endl;
char buffer[2048];
std::string response;
recv(s, (char*)&buffer, 2048, 0);
response = std::string(buffer);
int start = int(response.find("\r\n\r\n"));
int iplength = response.length()-start;
std::string ip = "";
for(int i = start; i < response.length(); i++){
if((response.at(i) >= '1' && response.at(i) <= '9') || response.at(i) == '.') ip += response.at(i);
}
closesocket(s);
return ip;
}
else{
std::cout << "Could not connect: " << WSAGetLastError() << std::endl;
}
return "127.0.0.1";
}