.net实现ping的实例代码

  

复制代码 代码如下:

  class ServicePinger

  {

  private static readonly ILog log = LogManager.GetLogger(typeof(ServicePinger));

  public ServicePinger(string siteName, string siteUrl, string serviceUrl)

  {

  if (siteName == null)

  throw new ArgumentException("siteName can't be null");

  if (siteUrl == null)

  throw new ArgumentException("siteUrl can't be null");

  if (serviceUrl == null)

  throw new ArgumentException("serviceUrl can't be null");

  if (siteName.Length == 0)

  throw new ArgumentException("siteName can't be empty");

  if (siteUrl.Length == 0)

  throw new ArgumentException("siteUrl can't be empty");

  if (serviceUrl.Length == 0)

  throw new ArgumentException("serviceUrl can't be empty");

  pingingSiteName = siteName;

  pingingSiteUrl = siteUrl;

  serviceUrlToPing = serviceUrl;

  }

  private string pingingSiteName = string.Empty;

  private string pingingSiteUrl = string.Empty;

  private string serviceUrlToPing = string.Empty;

  private int timeoutInMilliseconds = 3000;

  /// <summary>

  /// Does the actual pinging of the service

  /// </summary>

  public void Ping()

  {

  try

  {

  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceUrlToPing);

  request.Method = "POST";

  request.ContentType = "text/xml";

  request.Timeout = timeoutInMilliseconds;

  request.Credentials = CredentialCache.DefaultNetworkCredentials;

  Stream stream = (Stream)request.GetRequestStream();

  using (XmlTextWriter writer = new XmlTextWriter(stream, Encoding.ASCII))

  {

  writer.WriteStartDocument();

  writer.WriteStartElement("methodCall");

  writer.WriteElementString("methodName", "weblogUpdates.ping");

  writer.WriteStartElement("params");

  writer.WriteStartElement("param");

  writer.WriteElementString("value", pingingSiteName);

  writer.WriteEndElement();

  writer.WriteStartElement("param");

  writer.WriteElementString("value", pingingSiteUrl);

  writer.WriteEndElement();

  writer.WriteEndElement();

  writer.WriteEndElement();

  }

  request.GetResponse();

  }

  catch (InvalidOperationException ex)

  {

  log.Error(ex);

  }

  catch (NotSupportedException ex)

  {

  log.Error(ex);

  }

  }

  }