int GetWan(char *ww)
{
WSAData wsaDat;
short int Port = 80;
WSAStartup(MAKEWORD(1,1),&wsaDat);
SOCKET sd = socket(AF_INET, SOCK_STREAM, 0);
SOCKADDR_IN sockAddr;
memset((void*)&sockAddr,0,sizeof(sockAddr));
sockAddr.sin_family=AF_INET;
sockAddr.sin_port=htons(Port);
sockAddr.sin_addr.s_addr=inet_addr("219.153.15.76");
connect(sd,
(LPSOCKADDR)&sockAddr,
sizeof(sockAddr));
char sendstr[]="GET /ip2city.asp HTTP/1.1\r\nAccept: */*\r\nReferer: ******\r\nUser-Agent: Mozilla/4.0\r\nHost: www.ip138.com\r\nConnection: close\r\n\r\n\0";
char* p;
int iLen = strlen(sendstr);
p = sendstr;
while (iLen)
{
int iRet = send(sd,p,iLen,0);
if (iRet > 0)
{
p += iRet;
iLen -= iRet;
continue;
}
return 0;
}
char recvstr[1024];
memset(recvstr,0,1024);
p = recvstr;
char* iIndex_Head ;
iLen = 1024;
int need_len = -1;
while (iLen)
{
int iRet = recv(sd,p,iLen,0);
if (iRet <= 0)
{
return 0;
}
p += iRet;
iLen -= iRet;
if ((iIndex_Head = strstr(recvstr,"\r\n\r\n"))&&(need_len==-1))
{
char* iIndex = strstr(recvstr,"Content-Length:");
if (!iIndex)
{
continue;
}
char *p1 = iIndex + strlen("Content-Length:");
need_len = iIndex_Head - recvstr + 2 + atol(p1);
}
if (1024 - iLen >=need_len) { break;
}
}
char *p1 = strstr(iIndex_Head,"[");
char *p0 = strstr(p1,"]");
*p0 = '\0';
strcpy(ww,p1+1);
closesocket(sd);
WSACleanup();
return atoi(ww);
}
转载于:https://www.cnblogs.com/rogee/archive/2011/04/30/2033403.html