您的位置: 网站首页 > 编程乐园 > 阅读文章

Delphi域名转IP地址 – 用NMHTTP和WINSOCK

  今天分析了明小子注入工具的源代码,发现他用的是NMHTTP控件来实现域名转IP的。我把源代码分离了出来:

procedure TForm1.btpingClick(Sender: TObject);
begin
  if Form1.SiteName.Text = '' then               //判断是否有输入网址
    begin
    showmessage('请输入域名');
    end;
  Form1.NMHTTP1.Host:=Form1.SiteName.Text;     //需要解析的主机
  Form1.NMHTTP1.Port:=80;                      //设置端口
  Form1.btPing.Enabled:=False;
  Form1.SiteName.Enabled:=False;
  try
   Form1.NMHTTP1.Options(Form1.SiteName.Text);
  except
  showmessage('请检测域名是否输入正确,或网络连接是否正常!');
  end;
  Form1.NMHTTP1.Disconnect;                   //断开
end;

end.

  但是Delphi7中没有NMHTTP控件,所以我用winsock来实现域名转IP。记得添加Winsock单元,源代码如下:

function HostToIP(Name: string; var Ip: string): Boolean;
var
  wsdata : TWSAData;
  hostName : array [0..255] of char;
  hostEnt : PHostEnt;
  addr : PChar;
begin
  WSAStartup ($0101, wsdata);
  try
    gethostname (hostName, sizeof (hostName));
    StrPCopy(hostName, Name);
    hostEnt := gethostbyname (hostName);
    if Assigned (hostEnt) then
      if Assigned (hostEnt^.h_addr_list) then begin
        addr := hostEnt^.h_addr_list^;
        if Assigned (addr) then begin
          IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
          byte (addr [1]), byte (addr [2]), byte (addr [3])]);
          Result := True;
        end
        else
          Result := False;
      end
      else
        Result := False
    else begin
      Result := False;
    end;
  finally
    WSACleanup;
  end
end;

procedure TForm1.Button1Click(Sender: TObject);
var
hqw:string;
begin

HostToIP(edit1.text,hqw);
edit2.text:=hqw;

end;

end.
  • 属于分类: 编程乐园
  • 本文标签:
  • 人气指数: 4,700
  • 文章作者: 野球小子
  • 生产日期: 2007年11月09日 - 13时21分15秒
看看还有没有您感兴趣的:

  • 您的大名(必填)
  • E-Mail (必填)
  • 您的网站(有的话就写一下吧~)
  • 评论内容:(必填)