两种方法用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.

相关阅读 >>

Delphi调用游戏call代码

Delphi程序在每个windows 会话中只执行一次

Delphi获得唯一id字符串

Delphi 字符串查找替换函数

Delphi tnethttpclient的用法

Delphi 获取当前目录下的.txt文本不要带后缀扩展名

Delphi xe7实现手机上获取wifi信息的程序

Delphi为你的窗体有效地提供剪贴板的相关操作

Delphi datamodule1 fdconnection1数据库连接

Delphi文本数据导入数据库的方法

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    暂无评论...