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

Taget udgangspunkt i spørgsmål fra https://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)