您现在的位置:首页 >> 网络通讯 >> 网络通讯 >> 内容

Delphi中用Socket API实现PING

时间:2011/9/3 15:13:27 点击:

  核心提示:PING无非是向远程主机发送一个ICMP包,如果给定时间内没有接收到回应就认为是超时,如果收到回应则分析接收到的ICMP包,得到TTL、类型以及用时。unitYRecords; interface u...

PING无非是向远程主机发送一个ICMP包,如果给定时间内没有接收到回应就认为是超时,如果收到回应则分析接收到的ICMP包,得到TTL、类型以及用时。

unit YRecords;
interface
uses
  Windows;
const
  ICMP_ECHO       = 8;
  ICMP_ECHOREPLY  = 0;
  ICMP_MIN        = 8;
  PACKET_SIZE     = 32;
  MAX_PACKET_SIZE = 512;
  MAX_IP_HDR_SIZE = 60;
type
  s32     = Integer;
  u32     = DWORD;
  u8      = Byte;
  u16     = word;       PU16 = ^U16;
  //
  //IP Packet Header
  //
  PIPHeader = ^YIPHeader;
  YIPHeader = record
    u8verlen    : u8;//4bits ver, 4bits len, len*4=true length
    u8tos       : u8;//type of service, 3bits 优先权(现在已经被忽略), 4bits TOS, 最多只能有1bit为1
    u16totallen : u16;//整个IP数据报的长度,以字节为单位。
    u16id       : u16;//标识主机发送的每一份数据报    
    u16offset   : u16;//3bits 标志,13bits片偏移
    u8ttl       : u8;//生存时间字段设置了数据报可以经过的最多路由器数。
    u8protol    : u8;//协议类型,6表示传输层是TCP协议。
    u16checksum : u16;//首部检验和    
    u32srcaddr  : u32;//源IP地址,不是‘xxx.xxx.xxx.xxx’的形势哦
    u32destaddr : u32;//目的IP地址,同上
  end;
  //
  //ICMP Packet Header
  //
  PICMPHeader = ^YICMPHeader;
  YICMPHeader = record
    u8type      : u8;
    u8code      : u8;
    u16chksum   : u16;
    u16id       : u16;
    u16seq      : u16;
  end;
全部代码已经打包下载



迅雷专用高速下载

Tags:中用 实现 
作者:网络 来源:转载
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • 盒子文章(www.2ccc.com) © 2024 版权所有 All Rights Reserved.
  • 沪ICP备05001939号