tags:

views:

433

answers:

5

Question says it all really, is there a C# answer to VB.NET's My.Computer.Network.Ping ?

Cheers!

+6  A: 

See http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping.aspx

    // args[0] can be an IPaddress or host name.
    public static void Main (string[] args)
    {
        Ping pingSender = new Ping ();
        PingOptions options = new PingOptions ();

        // Use the default Ttl value which is 128,
        // but change the fragmentation behavior.
        options.DontFragment = true;

        // Create a buffer of 32 bytes of data to be transmitted.
        string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
        byte[] buffer = Encoding.ASCII.GetBytes (data);
        int timeout = 120;
        PingReply reply = pingSender.Send (args[0], timeout, buffer, options);
        if (reply.Status == IPStatus.Success)
        {
            Console.WriteLine ("Address: {0}", reply.Address.ToString ());
            Console.WriteLine ("RoundTrip time: {0}", reply.RoundtripTime);
            Console.WriteLine ("Time to live: {0}", reply.Options.Ttl);
            Console.WriteLine ("Don't fragment: {0}", reply.Options.DontFragment);
            Console.WriteLine ("Buffer size: {0}", reply.Buffer.Length);
        }
    }
Jan Jongboom
+1  A: 

http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping.aspx

EDIT: Alternatively, you could add reference to Microsoft.VisualBasic.dll which resides in GAC & use it from c#, than to write code by yourself ;)

shahkalpesh
+3  A: 

Check this page at the bottom in comments section: http://msdn.microsoft.com/en-us/library/he5sca5t%28VS.80%29.aspx

Somebody already answered your question.

Thanks thats what i was looking for, everywhere i looked it was 100 lines of code and i just wanted something simple!
JoeBeez
+2  A: 

There is a Ping class in the System.Net.NetworkInformation namespace.

Dan
+1  A: 

Why not just add a reference to the Microsoft.VisualBasic.dll? In Solution Explorer, right click the solution and select Add Reference. When the References dialog appears find and select the Microsoft.VisualBasic.dll, click OK.

Microsoft.VisualBasic.Devices.Network net = new Network();
bool success = net.Ping("www.google.com");
Phaedrus
Exactly, what I said above.
shahkalpesh
Because you'll make other developers cry...
sixlettervariables
Wow, a C# programmer adding a reference to the native VB dll. That just sounds *wrong*.
Josh Stodola
This is just C# pedantry. What's wrong about it? It's a perfectly acceptable solution. There is nothing 'wrong' with a C# programmer who uses all of the tools available. If you can provide me with an explanation of why this is 'wrong' and why all the down votes i would love to hear it. Apparently it doesn't make Scott Hanselman cry, here's a quote "There's good stuff in Microsoft.VisualBasic.dll, and just because it isn't System.Something doesn't mean you shouldn't reference it with abandon. Go nuts." - http://www.hanselman.com/blog/CommentView.aspx?guid=d2f676ea-025b-4fd6-ae79-80b04a34f24c
Phaedrus