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. [SQL]SQL中EXISTS的用法

    比如在Northwind数据库中有一个查询为SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FR ...

  2. 第12课 std::bind和std::function(3)_std::function可调用对象包装器

    1. std::function (1)首先是一个类模板,用于包装可调用对象.可以容纳除了类成员(函数)指针之外的所有可调用对象. (2)可以将普通函数,lambda表达式和函数对象类统一起来.尽管它 ...

  3. 第6章 静态路由和动态路由(4)_OSPF动态路由协议

    6. OSPF动态路由协议 6.1 OSPF协议(Open Shortest Path First,OSPF开放式最短路径优先协议) (1)通过路由器之间通告链路的状态来建立链路状态数据库,网络中所有 ...

  4. 线程守护进程与GIL

    为何要用多线程 多线程指的是,在一个进程中开启多个线程,简单的讲:如果多个任务共用一块地址空间,那么必须在一个进程内开启多个线程.详细的讲分为4点: 1. 多线程共享一个进程的地址空间 2. 线程比进 ...

  5. virsh详解

    来个表情包表达我此时的心情 man virsh virsh [options]... [<command_string>] virsh [options]... <command&g ...

  6. mysql:视图,触发器,事务,存储过程,函数。

    一  视图 1 什么是视图:视图其实就是通过查询得到一张表并且保存下来,就是一张虚拟的表,并非真实存在,比如我们将两个表在终端通过(inner join)内链接起来,那么我们得到的这个表就叫做视图,其 ...

  7. fatal error C1083: Cannot open include file: 'openssl/opensslv.h'

    在安装针对ELK系统的警告工具elastalert时,报错: fatal error C1083: Cannot open include file: 'openssl/opensslv.h',如下图 ...

  8. Java调用Jenkins接口实现远程发版

    主要有以下几个要点: 1.在 Manage Jenkins 中设置Configure Global Security(主要是设置CSRF Protection中的prevent cross site ...

  9. nginx 本地映射

    server{ listen 80; server_name www.test.com; ssi on; ssi_silent_errors on; //设置为on则在处理SSI文件出错时不输出错误信 ...

  10. ubantu 上hadoop 搭建

    Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04 参考 http://www.powerxing.com/install-hadoop/ 2014-08-09 ...