//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include "Unit1.h"
#include "winsock.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "IdBaseComponent"
#pragma link "IdComponent"
#pragma link "IdHTTP"
#pragma link "IdTCPClient"
#pragma link "IdTCPConnection"
#pragma resource "*.dfm"
void _trace(char *prompt, ...)
{
char buf[20480]= {0};
va_list argptr;
va_start(argptr, prompt);
vsprintf(buf, prompt, argptr);
OutputDebugString(buf);
va_end(argptr);
}
#ifdef _DEBUG
#define TRACE _trace
#else
#define TRACE
#endif
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TStringStream *s=new TStringStream();
IdHTTP1->Get("http://www.ip138.com/ip2city.asp",s);
UnicodeString str= s->DataString;
int i=str.Pos("[");
int j=str.Pos("]");
if(i>0 && j>i)
{
TRACE("gettext:%s",str.SubString(i+1,j-i-1).t_str());
Edit1->Text=str.SubString(i+1,j-i-1);
}
else
{
TRACE("gettext:%d %d",i,j);
}
delete s;
WSAData wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData); //初始化WINSOCK调用
char HostName[64]; //存放本主机名
HOSTENT *lpHostEnt;
gethostname(HostName,sizeof(HostName)); //利用得到的主机名去获得主机结构
TRACE ("HostName=%s",HostName);
lpHostEnt=gethostbyname(HostName); //利用主机名去取主机结构
for (int i=0; lpHostEnt->h_addr_list[i]!=NULL; i++)
{
IN_ADDR *p=(IN_ADDR *)(lpHostEnt->h_addr_list[i]);
String IP=inet_ntoa(*p); //数字地址转换成带.串IP
Edit2->Text=IP;
TRACE("getlocalhost:%s",IP.t_str());
//Memo1->Lines->Add(IP);
//unsigned char *b=(unsigned char *)p;
//Memo1->Lines->Add((int)b[0]);
// Memo1->Lines->Add((int)b[1]);
//Memo1->Lines->Add((int)b[2]);
//Memo1->Lines->Add((int)b[3]);
}
WSACleanup(); //释放WINSOCK调用
}
//---------------------------------------------------------------------------
得到本机局域网和公网ip
3星 · 超过75%的资源 需积分: 18 91 浏览量
2011-07-04
16:56:31
上传
评论
收藏 36KB RAR 举报
qiaozhangchi
- 粉丝: 60
- 资源: 53