using System;
using System.Drawing;
using System.Collections;
using System.Data;
using System.Net;
using System.Net.Sockets;
/// Ping类
public class Ping
{
//声明常量
const int SOCKET_ERROR = -1;
const int ICMP_ECHO = 8;
// 程序入口
public static void Main()
{
Ping p = new Ping();
Console.WriteLine("请输入要 Ping 的IP或者主机名字:");
string MyUrl = Console.ReadLine();
Console.WriteLine("正在 Ping " + MyUrl + " ……");
Console.Write(p.PingHost(MyUrl));
Console.Read();
}
public string PingHost(string host)
{
// 声明 IPHostEntry
IPHostEntry serverHE, fromHE;
int nBytes = 0;
int dwStart = 0, dwStop = 0;
//初始化ICMP的Socket
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp);
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 1000);
// 得到Server EndPoint
try
{
serverHE = Dns.GetHostByName(host);
}
catch (Exception)
{
return "没有发现主机";
}
// 把 Server IP_EndPoint转换成EndPoint
IPEndPoint ipepServer = new IPEndPoint(serverHE.AddressList[0], 0);
EndPoint epServer = (ipepServer);
// 设定客户机的接收Endpoint
fromHE = Dns.GetHostByName(Dns.GetHostName());
IPEndPoint ipEndPointFrom = new IPEndPoint(fromHE.AddressList[0], 0);
EndPoint EndPointFrom = (ipEndPointFrom);