第二书店论坛
欢迎光临第二书店论坛。激活帐号(说明:系统正在将老用户陆续填加到论坛中,如激活失败,请直接登陆!)
首页 搜索 用户列表 FAQ 注册 登录  
第二书店论坛 » 技术交流区 » .NET技术 » Asp.net编程技术见解,欢迎进来讨论!
  Asp.net编程技术见解,欢迎进来讨论!
帖子发起人: dsfghdshvh   发起时间: 2006-03-10 10:13 上午   回复数: 0
« 上一主题 下一主题 »
楼主
  2006-03-10, 10:13 上午
dsfghdshvh 离线,最后访问时间: 2006-3-10 10:14:12 dsfghdshvh

无等级

注册: 2006年3月10日
积分: -2
精华: 0
发贴: 1
Asp.net编程技术见解,欢迎进来讨论!
 

Asp.net编程技术见解,欢迎进来讨论!
    
    PING 是一个用来检测网络连接速度的工具,它会在本机和给出的远程主机名之间建立一个SOCKET 连接并向其发送一个ICMP协议格式的数据包,然后远程主机作出响应,发回一个数据包,通过计算发送到接收数据包的时间间隔,我们可以确定连接的速度。
    
    
    
     此程序可以使用于 asp+asp.net 虚拟主机,时代互联(www.now.net.cn)的虚拟主机可以支持 。虚拟主机的其他的配置问题,可以见:www.now.net.cn/host
     主机+域名+邮箱 的优惠套餐,可以见 : http://www.now.net.cn/special/host.net
    
    
    
    使用方法 ping <hostname> [/r]
    
    <hostname> 主机名
    
    [/r] 可选属性,决定是否连续的 ping 远程主机。
    
    
    下面是代码:
    
    ///ping.cs
    
    namespace SaurabhPing
    
    {
    
    using System;
    
    using System.Net;
    
    using System.Net.Sockets;
    
    /// <summary>
    
    /// 主要的类:ping
    
    /// </summary>
    
    class Ping
    
    {
    
    //声明几个常量
    
    const int SOCKET_ERROR = -1;
    
    const int ICMP_ECHO = 8;
    
    /// <summary>
    
    /// 这里取得Hostname参数
    
    /// </summary>
    
    public static void Main(string[] argv)
    
    {
    
    if(argv.Length==0)
    
    {
    
    //If user did not enter any Parameter inform him
    
    Console.WriteLine("Usage:Ping <hostname> /r") ;
    
    Console.WriteLine("<hostname> The name of the Host who you want to ping");
    
    Console.WriteLine("/r Ping the host continuously") ;
    
    }
    
    else if(argv.Length==1)
    
    {
    
    //Just the hostname provided by the user
    
    //call the method "PingHost" and pass the HostName as a parameter
    
    PingHost(argv[0]) ;
    
    }
    
    else if(argv.Length==2)
    
    {
    
    //the user provided the hostname and the switch
    
    if(argv[1]=="/r")
    
    {
    
    //loop the ping program
    
    while(true)
    
    {
    
    //call the method "PingHost" and pass the HostName as a parameter
    
    PingHost(argv[0]) ;
    
    }
    
    }
    
    else
    
    {
    
    //if the user provided some other switch
    
    PingHost(argv[0]) ;
    
    }
    
    }
    
    else
    
    {
    
    //Some error occurred
    
    Console.WriteLine("Error in Arguments") ;
    
    }
    
    }
    
    
    /// <summary>
    
    /// 主要的方法,用来取得IP,
    
    /// 并计算响应时间
    
    /// </summary>
    
    public static void PingHost(string host)
    
    {
    
    //Declare the IPHostEntry
    
    IPHostEntry serverHE, fromHE;
    
    int nBytes = 0;
    
    int dwStart = 0, dwStop = 0;
    
    //Initilize a Socket of the Type ICMP
    
    Socket socket =
    
    new Socket(AddressFamily.AfINet, SocketType.SockRaw, ProtocolType.ProtICMP);
    
    
    // Get the server endpoint
    
    try
    
    {
    
    serverHE = DNS.GetHostByName(host);
    
    }
    
    catch(Exception)
    
    {
    
    Console.WriteLine("Host not found"); // fail
    
    return ;
    
    }
    
    
    // Convert the server IP_EndPoint to an EndPoint
    
    IPEndPoint ipepServer = new IPEndPoint(serverHE.AddressList[0], 0);
    
    EndPoint epServer = (ipepServer);
    
    
    // Set the receiving endpoint to the client machine
    
    fromHE = DNS.GetHostByName(DNS.GetHostName());
    
    IPEndPoint ipEndPointFrom = new IPEndPoint(fromHE.AddressList[0], 0);
    
    EndPoint EndPointFrom = (ipEndPointFrom);
    
    
    int PacketSize = 0;
    
    IcmpPacket packet = new IcmpPacket();
    
    // Construct the packet to send
    
    packet.Type = ICMP_ECHO; //8
    
    packet.SubCode = 0;
    
    packet.CheckSum = UInt16.Parse("0");
    
    packet.Identifier = UInt16.Parse("45");
    
    packet.SequenceNumber = UInt16.Parse("0");
    
    int PingData = 32; // sizeof(IcmpPacket) - 8;
    
    packet.Data = new Byte[PingData];
    
    //Initilize the Packet.Data
    
    for (int i = 0; i < PingData; i++)
    
    {
    
    packet.DataIdea = (byte)'#';
    
    }
    
    
    //Variable to hold the total Packet size
    
    PacketSize = PingData + 8;
    
    Byte [] icmp_pkt_buffer = new Byte[ PacketSize ];
    
    Int32 Index = 0;
    
    //Call a Method Serialize which counts
    
    //The total number of Bytes in the Packet
    
    Index = Serialize(
    
    packet,
    
    icmp_pkt_buffer,
    
    PacketSize,
    
    PingData );
    
    //Error in Packet Size
    
    if( Index == -1 )
    
    {
    
    Console.WriteLine("Error in Making Packet");
    
    return ;
    
    }
    
    
    // now get this critter into a UInt16 array
    
    
    //Get the Half size of the Packet
    
    Double double_length = Convert.ToDouble(Index);
    
    Double dtemp = Math.Ceil( double_length / 2);
    
    int cksum_buffer_length = Convert.ToInt32(dtemp);
    
    //Create a Byte Array
    
    UInt16 [] cksum_buffer = new UInt16[cksum_buffer_length];
    
    //Code to initialize the Uint16 array
    
    int icmp_header_buffer_index = 0;
    
    for( int i = 0; i < cksum_buffer_length; i++ ) {
    
    cksum_bufferIdea =
    
    BitConverter.ToUInt16(icmp_pkt_buffer,icmp_header_buffer_index);
    
    icmp_header
    
    以上代码可以直接在时代互联的ASP+ASP.NET 虚拟主机上直接运行,欢迎试用 !到www.now.net.cn/host 订购后可试用 !
    
     关于ASP+ASP.NET高速虚拟主机,也有同时支持JSP(JAVA) 和PHP的综合虚拟主机。也可以试用,其他问题可以有免费网络电话咨询,
     欢迎随时联系 http://www.now.net.cn/customer/moreline.net

http://www.now.net.cn

空间介绍: http://now.net.cn/vhost/
 
   ★静态HTML网页 ,入门学习型虚拟主,50M独立网页空间,100元/年
    
     基本型A 380元/年 150M的网站空间, 支持JSP
    
     增强型A 988元/年 250M的网站空间+JSP+MYSQL数据库
    
     ★150M空间 + 100M邮局 + 域名 = 348元!
       更多优惠,详情请见:http://www.now.net.cn/special/host.net

时代互联(www.now.net.cn) 的虚拟主机,免费配有 CDN 镜象网络加速 ,送域名 邮箱,流量访问系统,留言版,计数器!
    
    虚拟主机在线订购试用,请到: http://www.now.net.cn/vhost
  
    空间的优惠套餐可见 : http://www.now.net.cn/special/host.net
    
    如有问题要咨询,时代互联提供免费咨询电话,点击这里: http://www.now.net.cn/customer/moreline.net
    QQ 联系 :168082090


IP 地址: 已登录   来自: 广东省珠海市北京师范大学珠海校区    返回顶部
 第 1 页 总共 1 页 [共有 1 条记录]
第二书店论坛 » 技术交流区 » .NET技术 » Asp.net编程技术见解,欢迎进来讨论!
: DearBook | CSDN | ̳

Asp.Net Forums version: 2.2.1929
(C)Copyright 2004-2005, hiDotNet.com. All Rights Reserved.
意见反馈 | 关于我们

Powered by Community Server :: Forums 中文本地化: hiDotNet.com