如何得到本机的IP地址
问题点数:50、回复次数:8Top
1 楼BCB(天下三分明月夜,二分无赖是扬州)回复于 2001-03-01 13:02:00 得分 25
#include "winsock.h"
void __fastcall TForm1::Button1Click(TObject *Sender)
{
WSAData wsaData;
WSAStartup(MAKEWORD(2,0),&wsaData); //初始化WINSOCK调用
char HostName[64]; //存放本主机名
gethostname(HostName,sizeof(HostName)); //得到主机名
Edit1->Text=HostName;
HOSTENT *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串
Memo1->Lines->Add(IP);
}
WSACleanup(); //释放WINSOCK调用
}
Top
2 楼BCB(天下三分明月夜,二分无赖是扬州)回复于 2001-03-01 13:09:00 得分 0
这是C++的,让你参考,
有的机子有多个IP地址,都能一一显示出;
Top
3 楼sun_lz(sun_xp)回复于 2001-03-01 13:21:00 得分 25
procedure TForm1.ButtonIPClick(Sender: TObject);
type
TaPInAddr = Array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: Array[0..63] of Char;
I: Integer;
GInitData: TWSAData;
IP: String;
begin
Screen.Cursor := crHourGlass;
try
WSAStartup($101, GInitData);
IP:='0.0.0.0';
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then
begin
ShowMessage(IP);
Exit;
end;
pPtr := PaPInAddr(phe^.h_addr_list);
I := 0;
while pPtr^[I] <> nil do
begin
IP := inet_ntoa(pptr^[I]^);
Inc(I);
end;
WSACleanup;
ShowMessage(IP);
finally
Screen.Cursor := crDefault;
end;
end;Top
4 楼Kingron(单身走我路……)回复于 2001-03-01 13:24:00 得分 0
这个问题问了不下10次!为什么不搜索一下呢?Top
5 楼chenjiong(准程序员:升级中....)回复于 2001-03-01 13:39:00 得分 0
是啊,连我都知道了。Top
6 楼szkingrose(szkingrose)回复于 2001-03-02 19:43:00 得分 0
如果做网络方面的话,加一个nmrtp ,它有一个localip属性,就是你的ipTop
7 楼szkingrose(szkingrose)回复于 2001-03-02 19:43:00 得分 0
nmftp.loaclipTop
8 楼bill_lasker()回复于 2001-03-02 20:28:00 得分 0
用socket,OK·Top




