|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
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("Usageing <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 "ingHost" 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 "ingHost" 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.Data = (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_buffer =
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 |
|