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. Java调用R语言

    R是统计计算的强大工具,JAVA是做应用系统的主流语言.JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的系统. 一.Rserve(远程通信模式) Rserve是一个基于TCP/ ...

  2. OpenJuege 兔子与星空

    总时间限制:  1000ms 内存限制:  10000kB 描述 很久很久以前,森林里住着一群兔子.兔子们无聊的时候就喜欢研究星座.如图所示,天空中已经有了n颗星星,其中有些星星有边相连.兔子们希望删 ...

  3. 第11章 拾遗5:IPv6和IPv4共存技术(1)_双栈技术和6to4隧道技术

    6. IPv6和IPv4共存技术 6.1 双栈技术 (1)双协议主机的协议结构 (2)双协议栈示意图 ①双协议主机在通信时首先通过支持双协议的DNS服务器查询与目的主机名对应的IP地址. ②再根据指定 ...

  4. boost 学习笔记 2: timer

    boost 学习笔记 2: timer copy from:http://einverne.github.io/post/2015/12/boost-learning-note-2.html 1:ti ...

  5. Android标题头滑动渐变,Titlebar滑动渐变,仿美团饿了么标题头渐变;

    原理就是滑动中改变透明度: 核心代码: rv.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public vo ...

  6. python学习之----正则表达式

  7. Https 忽略证书\使用自定义证书的java代码实现

    public SSLContext createIgnoreVerifySSL() throws KeyManagementException, NoSuchAlgorithmException, K ...

  8. redis 主从配置和集群配置

    主从配置 |  集群配置 redis主从 主从配置原因: 1.到达读写分离,读的操作和写操作比例10 : 1读数据频繁,写数据次数少,这样可以配置1个master数据库用来写数据,配置多个slave从 ...

  9. ROS进阶学习笔记(11)- Turtlebot Navigation and SLAM - ROSMapModify - ROS地图修改

    ROS进阶学习笔记(11)- Turtlebot Navigation and SLAM - 2 - MapModify地图修改 We can use gmapping model to genera ...

  10. NAS 百科 —— http://baike.baidu.com/item/NAS%E7%BD%91%E7%BB%9C%E5%AD%98%E5%82%A8

    NAS(Network Attached Storage)网络存储基于标准网络协议实现数据传输,为网络中的Windows / Linux / Mac OS 等各种不同操作系统的计算机提供文件共享和数据 ...