取IP(20分)

  • 主题发起人 主题发起人 ccll
  • 开始时间 开始时间
C

ccll

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样取本机的IP地址?由于小弟刚用Delphi不久,需要详细的Delphi程序,越详细越好。
 
function GetLocaName:string;
var
phe : PHostEnt;
Buffer :array [0..63] of char;
begin
Result := '';
GetHostName(Buffer,SizeOf(Buffer));
Phe := GetHostByName(Buffer);
if Phe=nil then
begin
Result:='127.0.0.1';
exit;
end;
Result:=StrPas(inet_ntoa(PInAddr(phe^.h_addr_list^)^));
end;
 
无忌兄,你的代码有点问题,我后来从清华BBS上找了一个,那个可以,我把它贴上来,欢迎你看看
uses WinSock;

function LocalIP:String;

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^ <> nil do begin
Result:=StrPas(inet_ntoa(pptr^^));
Inc(I);
end;
WSACleanup;
end;
至于分嘛,嘿嘿,就不给了。但还是很感谢你。
 
用我的代码当然你要手动调用winsock.dll里的函数,要先增加winsock.dll的引用记数
你自己不清楚这个吗?
一般做网络应用的程序,最开始就是要先增加winsock.dll的引用记数,退出时释放.
你如果用了DELPHI的一些网络控件那就不用这个了,
 
后退
顶部