delphi 域名转ip并判断ip是否可以联通
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是否可以联通的更多相关文章
- 获取IP及判断IP是否在区间
/// <summary> /// 获取客户端IP /// </summary> /// <returns></returns> public stat ...
- .NET记录-获取外网IP以及判断该IP是属于网通还是电信
在工作时,需要获取服务器公网IP(外网IP),并且判断该IP地址是属于网通还是电信.花时间整理一下,自己实现的代码,以及后续遇到的问题. /// <summary> /// 获取外网IP ...
- 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 ...
- js判断IP js判断域名
<html> <head> <script language="javascript" type="text/javascript" ...
- 做web开发和测试,修改hosts指定某个域名访问某个特定的IP后,如何使hosts立即生效的方法
本文转自SUN'S BLOG,原文地址:http://whosmall.com/post/143 hosts的配置方法: 在windows系统中,找到C:\windows\system32\drive ...
- ip校验方法:判断ip是否位于指定的范围内
import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.reg ...
- Linux 如何设置只允许域名访问站点而禁止IP访问站点
最近在论坛里看到有人问到 Linux 如何设置只允许域名访问站点而禁止IP访问站点的问题,之前自己也用过这个功能,可以防止别人用 IP 地址来访问到自己的网站,下面我就我自己的环境给出解决方法,我用的 ...
- php判断ip黑名单程序代码
学校的新闻系统要求有些新闻只开放校内ip浏览,于是重写了一个代码来实现此功能,实现后的结果是,只要把允许访问的ip列入ip.txt这个文件中即可,同时支持c类ip,例如: ip.txt192.1682 ...
- PHP判断ip地址是否合法
1.获取真正ip地址 function get_ip(){ //判断服务器是否允许$_SERVER if(isset($_SERVER)){ if(isset($_SERVER[HTTP_X_FORW ...
随机推荐
- MapReduce源码刨析
MapReduce编程刨析: Map map函数是对一些独立元素组成的概念列表(如单词计数中每行数据形成的列表)的每一个元素进行指定的操作(如把每行数据拆分成不同单词,并把每个单词计数为1),用户可以 ...
- 匿名内部类中不能修改int变量时、final int i 不能改变i的值时、或 i++线程不安全。使用AtomicInteger;
在匿名内部类或某某情况下中引入的变量必须是Final最终型的:这时还想要去修改这个变量就需要使用到AtomicInteger这个类了: AtomicInteger CarSize = new Atom ...
- java正则表达式替换空格和换行符
public class StringUtil { public static String getStringNoBlank(String str) { if(s ...
- JQ获取地址栏参数
//获取地址栏参数 function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + " ...
- java类库 collection与collections (转)
http://www.cnblogs.com/dashi/p/3597937.html Java中Collection和Collections的区别 1.java.util.Collection 是一 ...
- GNU tar
2.tar教程 2.4.常用选项 2.5.两个选项 2.6.创建档案文档 2.7.查看档案文档内容 4.tar操作 4.1.基本操作 4.2.高级操作 4.3.“-c”的选项 链接到压缩命令 2.ta ...
- Vue.js基础(二)
属性 可以将数据进行计算得出新的结果,也可以说是一个公式,有缓存. 应用:1,频繁使用的复杂公式. 2,需要监控的-----全局状态的管理 简写: computed:{ result:functi ...
- uuid.uuid4().hex
uuid.uuid4().hex .hex 将生成的uuid字符串中的 - 删除
- 安装e(fx)clipse到Eclipse (JavaFX工具)
转载自:https://www.yiibai.com/javafx/install-efxclipse-into-eclipse.html 想要在 Eclipse 中开发 JavaFX,那么可安装 J ...
- 电子书 VS 纸质书
电子书, 或者网络上的博客,技术文章(最好是 一系列的, 完整的). 比起纸质书来说, 优势在于: 1 根据左部的目录快速定位 到自己想看的章节.通过PgDn PgUp 等键盘功能快速翻页 2 方便的 ...