ASP til .NET - Ping med C# og VB.NET

Published 17 July 08 08:53 PM

Taget udgangspunkt i spørgsmål fra http://www.eksperten.dk/spm/838433

Noget som jeg selv har siddet og bikset med for en del år tilbage er hvordan man henter oplysninger omkring "state", så man kan få at vide om en maskine er oppe eller nede. Jeg snakker her om netværkets allerførste funktion - ping!

start -> kør -> cmd

Sådan gør du i windows, men der findes desværre ikke en tilsvarende metode i ASP.

I .NET derimod findes der et helt namespace spækket med lækre funktioner til netop at lave disse netværks forspørgelser. Ja, der findes skam også en ping metode, og den ligger under namespacet System.Net.NetworkInformation.

Så hvis vi gerne vil pinge en maskine kan vi lave en metode overpå der f.eks ser således ud:

   1:  using System;
   2:  using System.Net.NetworkInformation;
   3:   
   4:  namespace PingMachine
   5:  {
   6:      class Program
   7:      {
   8:          static void Main( string[] args )
   9:          {
  10:              Console.WriteLine( PingAddress( "192.168.1.2" ) );
  11:              Console.ReadLine();
  12:          }
  13:   
  14:          private static bool PingAddress( string address )
  15:          {
  16:              using( Ping ping = new Ping() ) {
  17:                  PingReply reply = ping.Send( address );
  18:   
  19:                  if( reply.Status == IPStatus.Success ) {
  20:                      return true;
  21:                  } else {
  22:                      return false;
  23:                  }            
  24:              }
  25:          }
  26:      }
  27:  }

Og i VB.NET kan du gøre det sådan her (har ikke tester VB udgaven, sorry)

   1:  Imports System
   2:  Imports System.Net.NetworkInformation
   3:   
   4:  Namespace PingMachine
   5:      Friend Class Program
   6:          Shared Sub Main(ByVal args() As String)
   7:              Console.WriteLine(PingAddress("192.168.1.2"))
   8:              Console.ReadLine()
   9:          End Sub
  10:   
  11:          Private Shared Function PingAddress(ByVal address As String) As Boolean
  12:              Using ping As New Ping()
  13:                  Dim reply As PingReply = ping.Send(address)
  14:   
  15:                  If reply.Status = IPStatus.Success Then
  16:                      Return True
  17:                  Else
  18:                      Return False
  19:                  End If
  20:              End Using
  21:          End Function
  22:      End Class
  23:  End Namespace
Det er da nemt :0)

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# a-foton » ASP til .NET - Ping med C# og VB.NET said on July 17, 2008 4:09 PM:

PingBack from http://blog.a-foton.ru/2008/07/asp-til-net-ping-med-c-og-vbnet/

# guidmaster´s .NET blog said on July 17, 2008 5:05 PM:

Det er jo sjovt som C# udviklere gerne vil gøre tingene lidt mere besværlige end de er :) Se nu Daniels

# Brian Rasmussen said on July 18, 2008 1:51 AM:

Hvorfor ikke bare henvise til: http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping.aspx

Og hvis jeg må komme med en lille bøn: please vælg enten C# eller VB - der er vel ingen grund til begge eksempler, når de nu ligner hinanden så meget.

# Morten said on July 18, 2008 3:16 AM:

Eller blot:

Console.WriteLine(new Ping().Send("192.168.1.2").Status==IPStatus.Success);

Ikke så kønt men MEGET kort :-)

# danielmf said on July 18, 2008 4:56 AM:

@Brian: hvis jeg bare linker til et dokument på engelsk er der sikkert mange der ikke læser indlægget, og det er der ikke meget sjov i.

Det er ikke alle der kan se C# som VB og omvendt. Det er godt at der er kode eksempler på begge sprog så vi ikke mister den ene halvdel af udviklerne, og der findes stadig flere udviklere der koder ASP og som VB.NET appelere meget mere til end C#.

@Guidmaster: så lærte jeg også lidt idag :-)

# Brian said on July 20, 2008 3:08 AM:

Mortens løsning får dog ikke kaldt Dispose().

Tip til Daniel:

return reply.Status == IPStatus.Success;

Pænere kode, samme resultat.

# Søren Spelling Lund said on July 28, 2008 9:40 AM:

Daniel, jeg vil påstå at alle og enhver er i stand til at forstå kode skrevet i VB eller C#. Særligt når der ikke er tale anvendelse af indviklede sprogkonstruktioner.

# danielmf said on July 31, 2008 3:47 AM:

Jamen Søren dog, det er da fint du har det sådan!

# Klaus Hebsgaard said on August 3, 2008 5:33 AM:

Jeg har lige opdaget My namespacet i VB (OK, jeg er C# udvikler):

My.Computer.Network.Ping("192.168.2.1")

Leave a Comment

(required) 
(optional)
(required) 

  
Enter Code Here: Required

This Blog

Syndication

Page view tracker