回复人: BCB(:)) 得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调用
} 回复贴子:
回复人: BCB(:)) 得0分
这是C++的,让你参考,
有的机子有多个IP地址,都能一一显示出;
回复贴子:
回复人: sun_lz(sun_xp) 得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;
#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调用
} 回复贴子:
回复人: BCB(:)) 得0分
这是C++的,让你参考,
有的机子有多个IP地址,都能一一显示出;
回复贴子:
回复人: sun_lz(sun_xp) 得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;
解决方案 »
- 报表分页的问题,请高手帮忙!!!!!!!!!!!
- 有谁可以说以说说 Function 的用法?谢谢了!
- 大家来帮帮忙,关于图形显示的问题
- 问个简单问题,Image控件响应鼠标消息的方法?
- delphi6中为什么不认识null
- 觅:UpdateSql控件的用法,最好时例程 200分
- 1个是数码相机,另1个是扫描仪,我想随时选择任1个输入源,怎么办?
- 代码写的漂亮,不只是单单表现在你对代码的缩进以及语句的规范性,而最主要的我觉的漂亮的代码指的是......各位请进,请发表意见
- 一个Ado连接Access数据库的问题!
- 紧急!送分!类型转化问题。
- 我受不了了!CSDN死了?????????????
- 关于SQL语句
NMHTTP1.LocalIP;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;begin
WSAStartup($101, GInitData);
Result := '';
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do begin
result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
========================================
program get_ip;
uses
winsock,sysutils;
VAR
ch : ARRAY[1..32] OF Char;
i : Integer;
WSData: TWSAData;
MyHost: PHostEnt;
begin
IF WSAstartup(2,wsdata)<>0 THEN
BEGIN
Writeln('can''t start Winsock: Error ',WSAGetLastError);
Halt(2);
END;
try
IF getHostName(@ch[1],32)<>0 THEN
BEGIN
Writeln('getHostName failed');
Halt(3);
END;
except
Writeln('getHostName failed');
halt(3);
end;
MyHost:=GetHostByName(@ch[1]);
IF MyHost=NIL THEN
BEGIN
Writeln(GetHostName('+StrPas(@ch[1])+') failed : Error
'+IntToStr(WSAGetLastError));
Halt(4);
END
ELSE
BEGIN
Write('address ');
FOR i:=1 TO 4 DO
BEGIN
Write(Ord(MyHost.h_addr^[i-1]));
IF i<4 THEN
then write('.')
ELSE
writeln;
END;
END;
end.
===========================================
动态创建一个TPowerSock,然后读取它的LocalIP属性
function TfmMain.GetLocalIP: string;
var
wVersionRequested: WORD;
wsaData: TWSAData;
p: PHostEnt;
s: array[0..128] of Char;
begin
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
try
GetHostName(@s, 128);
p := GetHostByName(@s);
{Get the IpAddress}
Result := StrPas(iNet_ntoa(PInAddr(p^.h_addr_list^)^));
finally
WSACleanup
end
end;不要忘了Uses WinSock;