C#のフォームでのPingの方法


方法1: System.Net.NetworkInformation.Ping クラスを使用する方法

using System;
using System.Net.NetworkInformation;
public class PingExample
{
    public static void Main()
    {
        string hostNameOrAddress = "example.com";
        Ping pingSender = new Ping();
        PingReply reply = pingSender.Send(hostNameOrAddress);
        if (reply.Status == IPStatus.Success)
        {
            Console.WriteLine("Ping 成功 - 応答時間: " + reply.RoundtripTime + "ms");
        }
        else
        {
            Console.WriteLine("Ping 失敗 - エラーコード: " + reply.Status);
        }
    }
}

この例では、Ping クラスを使用して指定したホスト名または IP アドレスに対してPingを送信し、応答を受け取ります。

方法2: System.Net.Sockets.Socket クラスを使用する方法

using System;
using System.Net;
using System.Net.Sockets;
public class PingExample
{
    public static void Main()
    {
        string hostNameOrAddress = "example.com";
        IPAddress ipAddress = Dns.GetHostEntry(hostNameOrAddress).AddressList[0];
        Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp);
        byte[] buffer = new byte[32];
        EndPoint endPoint = new IPEndPoint(ipAddress, 0);
        socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 1000);
        socket.Connect(endPoint);
        socket.Send(buffer);
        socket.Receive(buffer);
        Console.WriteLine("Ping 成功");
    }
}

この例では、Socket クラスを使用してリモートホストに対してICMPメッセージを送信し、応答を受け取ります。

これらの例では、Pingの結果をコンソールに表示していますが、必要に応じて結果をフォーム上に表示することもできます。