unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls,WinSock;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Edit1: TEdit;

Edit2: TEdit;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

function PingHost(HostIP: String): Boolean;

type

PIPOptionInformation = ^TIPOptionInformation;

TIPOptionInformation = packed record

TTL: Byte;

TOS: Byte;

Flags: Byte;

OptionsSize: Byte;

OptionsData: PChar;

end;

PIcmpEchoReply = ^TIcmpEchoReply;

TIcmpEchoReply = packed record

Address: DWORD;

Status: DWORD;

RTT: DWORD;

DataSize: Word;

Reserved: Word;

Data: Pointer;

Options: TIPOptionInformation;

end;

TIcmpCreateFile = function: THandle; stdcall;

TIcmpCloseHandle = function(IcmpHandle: THandle): Boolean; stdcall;

TIcmpSendEcho = function(IcmpHandle:THandle;

DestinationAddress: DWORD;

RequestData: Pointer;

RequestSize: Word;

RequestOptions: PIPOptionInformation;

ReplyBuffer: Pointer;

ReplySize: DWord;

Timeout: DWord

): DWord; stdcall;

var

hICMP :THandle;

hICMPdll :THandle;

IcmpCreateFile :TIcmpCreateFile;

IcmpCloseHandle :TIcmpCloseHandle;

IcmpSendEcho :TIcmpSendEcho;

pIPE :PIcmpEchoReply;// ICMP Echo reply buffer

FIPAddress :DWORD;

FSize :DWORD;

FTimeOut :DWORD;

BufferSize :DWORD;

pReqData,pRevData:PChar;

MyString:string;

begin

Result :=False;

hICMPdll :=LoadLibrary('icmp.dll');

if hICMPdll= then exit;

@ICMPCreateFile :=GetProcAddress(hICMPdll,'IcmpCreateFile');

@IcmpCloseHandle :=GetProcAddress(hICMPdll,'IcmpCloseHandle');

@IcmpSendEcho :=GetProcAddress(hICMPdll,'IcmpSendEcho');

hICMP :=IcmpCreateFile;

if (hICMP=INVALID_HANDLE_VALUE)then exit;

FIPAddress :=inet_addr(PChar(HostIP));

MyString :='Hello,World'; //send data buffer

pReqData :=PChar(MyString);

FSize :=; //receive data buffer

BufferSize :=SizeOf(TICMPEchoReply)+FSize;

GetMem(pIPE,BufferSize);

FillChar(pIPE^,SizeOf(pIPE^),);

GetMem(pRevData,FSize);

pIPE^.Data :=pRevData;

FTimeOut :=;

try

Result :=IcmpSendEcho(hICMP,FIPAddress,pReqData,

Length(MyString),nil,pIPE,BufferSize,FTimeOut)>;

finally

IcmpCloseHandle(hICMP);

FreeLibrary(hICMPdll);

FreeMem(pRevData);

FreeMem(pIPE);

end;

end;

function HostToIP(Name: string; var Ip: string): Boolean;

var

wsdata : TWSAData;

hostName : array [..] of char;

hostEnt : PHostEnt;

addr : PChar;

begin

WSAStartup ($, 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 []),

byte (addr []), byte (addr []), byte (addr [])]);

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

IP:String;

flag:Boolean;

begin

//IP:='123.125.114.118';

IP:=edit2.text;

flag:=PingHost(IP);

if flag=true then

MessageBox(,'ping1','通路',MB_ICONASTERISK and MB_ICONINFORMATION)

else

MessageBox(,'ping2','断路',MB_ICONASTERISK and MB_ICONINFORMATION);

end;

procedure TForm1.Button2Click(Sender: TObject);

var

hqw:string;

begin

HostToIP(edit1.text,hqw);

edit2.text:=hqw;

end;

end.

delphi 域名转ip并判断ip是否可以联通的更多相关文章

  1. 获取IP及判断IP是否在区间

    /// <summary> /// 获取客户端IP /// </summary> /// <returns></returns> public stat ...

  2. .NET记录-获取外网IP以及判断该IP是属于网通还是电信

    在工作时,需要获取服务器公网IP(外网IP),并且判断该IP地址是属于网通还是电信.花时间整理一下,自己实现的代码,以及后续遇到的问题. /// <summary> /// 获取外网IP ...

  3. Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)

    Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer   Advanced Installer :Free for 30 da ...

  4. js判断IP js判断域名

    <html> <head> <script language="javascript" type="text/javascript" ...

  5. 做web开发和测试,修改hosts指定某个域名访问某个特定的IP后,如何使hosts立即生效的方法

    本文转自SUN'S BLOG,原文地址:http://whosmall.com/post/143 hosts的配置方法: 在windows系统中,找到C:\windows\system32\drive ...

  6. ip校验方法:判断ip是否位于指定的范围内

    import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.reg ...

  7. Linux 如何设置只允许域名访问站点而禁止IP访问站点

    最近在论坛里看到有人问到 Linux 如何设置只允许域名访问站点而禁止IP访问站点的问题,之前自己也用过这个功能,可以防止别人用 IP 地址来访问到自己的网站,下面我就我自己的环境给出解决方法,我用的 ...

  8. php判断ip黑名单程序代码

    学校的新闻系统要求有些新闻只开放校内ip浏览,于是重写了一个代码来实现此功能,实现后的结果是,只要把允许访问的ip列入ip.txt这个文件中即可,同时支持c类ip,例如: ip.txt192.1682 ...

  9. PHP判断ip地址是否合法

    1.获取真正ip地址 function get_ip(){ //判断服务器是否允许$_SERVER if(isset($_SERVER)){ if(isset($_SERVER[HTTP_X_FORW ...

随机推荐

  1. CS229 6.18 CNN 的反向传导算法

    本文主要内容是 CNN 的 BP 算法,看此文章前请保证对CNN有初步认识. 网络表示 CNN相对于传统的全连接DNN来说增加了卷积层与池化层,典型的卷积神经网络中(比如LeNet-5 ),开始几层都 ...

  2. Django之三种文件上传

    方式一: 通过form表单提交到后台 前端: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  3. 微信小程序:block的隐藏

    <block/> 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性. 所以 hidden.display等通用隐藏元素的方法对block是无效的 想要隐藏blo ...

  4. WPF GridLinesVisibility属性

    GridLinesVisibility:网格线可见性样式,其值有四种:All,Horizontal,None,Vertical.对应:全部,水平,没有,垂直 <!--#region 表格--&g ...

  5. Javascript函数心得

    Javascript函数 Javascript函数是由事件驱动的或者当他被调用时执行的可重复使用的代码块.所以说我们光创建了函数不调用是没有啥用的,我们必须得调用它才能执行. 1.什么是函数 (1)函 ...

  6. 剑指Offer(三):从尾到头打印链表

    说明: 1.本系列是根据<剑指Offer>这个系列做的一个小笔记. 2.直接动力是因为师兄师姐找工作很难,而且机械出生的我面试算法更难. 3.刚开始准备刷LeetCode.LintCode ...

  7. sshd_config

    1.sshd_config 选项不区分大小写,参数区分大小写. sshd_config选项及参数 选项 默认值 说明 AcceptEnv 不接受任何值   AddressFamily any any/ ...

  8. Unity3D Update() 和 FixedUpdate()区别

    Unity3D中 Update()与FixedUpdate()的区别是什么呢?从字面上理解,它们都是在更新时会被调用,并且会循环的调用.但是Update会在每次渲 染新的一帧时,被调用.而FixedU ...

  9. 浏览器预览office文件(word,Excel,等)

    提示:预览是通过后台转pdf到前台展示的过程,当然网上也有购买的api 举个栗子:(http://www.officeweb365.com/) <!DOCTYPE html> <ht ...

  10. 【Python爬虫实战】 使用代理服务器

    代理服务器:是一个处于我们与互联网中间的服务器,如果使用代理服务器,我们浏览信息的时候,先向代理服务器发出请求,然后又代理服务向互联网获取信息,再返回给我们使用代理服务器进行信息爬取,可以很好的解决I ...