怎样获取本机的ip
解决方案 »
- delphi + access 登陆模块的密码修改
- Com DLL编译文件比较大 400多K 这么减肥
- 程序是中文版的,用installshield打包。如果选择简体中文的,就不能在英文版的xp中安装,如果选英文,能安装,但都是乱码。这怎么解决阿
- 跪求:寻求一个财务软件系统(能实现入库,出库查询等功能得)
- ADO错误处理问题
- 有没有办法将SQL数据库中表的内容导到Excel呢???
- 菜鸡问题:怎样把数据库登陆窗口去掉?
- 工具条按钮位置
- 挑战高手,问:如何在win2000/xp下对软盘特殊扇区的直接读写?
- 各位大哥哥:怎样模拟“用户的点击”呢??? ——白玉静
- 大家帮帮忙 请问哪里有下flash的控件的 最好不是OCX
- 去掉数字中的逗号分隔符。急等
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.
===========================================
var
wVersionRequested: word;
wsaData: TWSAData;
P: PHostEnt;
s: array[0..128] of char;
p2: pchar;
OutPut: array[0..100] of char;
begin
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
GetHostName(@s, 128);
p := GetHostByName(@s);
p2 := iNet_ntoa(pInAddr(p^.h_addr_list^)^);
WSACleanup;
showmessage('本机IP:' + p2);
end;