delphi 取到本地IP

function TServerForm.NameToIP(): String;
type
  pu_long = ^u_long;
var
  varTWSAData : TWSAData;
  varPHostEnt : PHostEnt;
  varTInAddr : TInAddr;
  namebuf : Array[0..255] of Ansichar;
  fd : integer;
  rc : integer;
begin
  result := '';
  rc := WSAStartup($101,varTWSAData);
  if rc <> 0 then
  //  raise ESockUtilErr.CreateFmt( 'WSA Startup error: %d',[rc] )
  else
  begin
    gethostname(namebuf,sizeof(namebuf));
    varPHostEnt := gethostbyname(namebuf);
    varTInAddr.S_addr := u_long(pu_long(varPHostEnt^.h_addr_list^)^);
    result := inet_ntoa(varTInAddr);
  end;
  fd := WinSock.Socket( PF_INET, SOCK_STREAM, 0 );
  if fd = INVALID_SOCKET then
  //  raise ESockUtilErr.CreateFmt( '%d %d: Invalid socket',[fd,WSAGetLastError] );
  WSACleanup;
end;

 

posted @ 2013-02-24 15:56  神码都在云端  阅读(203)  评论(0编辑  收藏  举报