C# ile ping işlemleri


Ping atmak, network içerisindeki donanımların birbirleri ile iletişim halinde olduklarını anlamanın en kolay yoludur tabi sadece network içerisi ile sınırlandırmak yanlış olur. Aynı zamanda internet üzerinde varolan bir IP adresine veya hostname e ping atabiliriz.

Uzay alınına

using System.Net.NetworkInformation;

ekledikten sonra Ping sınıfımızı kurup hemen ip atmaya başlayabiliriz.

 

Ping attığımız hostname e ait IP adresini döner

Console.WriteLine("Ip adres: {0}", pReply.Address);

 

Yollanan paketin sunucuya ulaşıp geri dönmesi arasındaki geçen zamana ulaşılır

Round Trip Time

Console.WriteLine("Roundtrip Time: {0}", pReply.RoundtripTime + "ms");

 

Tcp paketin en fazla kac HOP süre boyunca transfer edilmeye calışacağını gösterir. Her router aldığı paketin TTL (Time to live) bir azaltır ve bir sonraki HOP a iletir

Console.WriteLine("Time to Live: {0}", pReply.Options.Ttl);

 

Gönderilen isteğin sonucu görebilirsiniz (24 farklı geri dönüş tipi mecvut)

Console.WriteLine("Durum: {0}", pReply.Status);

IPStatus

 

 

 

 

 

 

 

 

Ping.Send method unun 8 farklı kuruluşu bulunmakta. Bizim örneğimizde resimdeki yapı kullanıldı. Ping atılacak ip adresi veya hostname, time out süresi, gönderilecek data boyutu ve ping options.

PingRepley

 

Uygulamanın tamamına bakalım…

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.NetworkInformation;

namespace PingSample
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Ping atmak için IP adresi veya Hostname girin : ");
            string adres = Console.ReadLine();
            Console.WriteLine();

            try
            {
                Ping myPing = new Ping();
                PingOptions pOptions = new PingOptions();
                pOptions.DontFragment = true;

                byte[] myByte = new byte[32];
                //
                PingReply pReply = myPing.Send(adres, 5000, myByte,pOptions);

                //IP adresine ulaşabiliyorsak ve yanıtda aldıysak Success olarak dönüş yapacak
                if (pReply.Status == IPStatus.Success)
                {
                    Console.WriteLine("Ip adres: {0}", pReply.Address);
                    Console.WriteLine("Roundtrip Time: {0}", pReply.RoundtripTime + "ms");
                    Console.WriteLine("Time to Live: {0}", pReply.Options.Ttl);
                    Console.WriteLine("Durum: {0}", pReply.Status);
                    Console.WriteLine("Zaman: {0}", DateTime.Now);
                }
                //Ip adresine ulaşamıyorsak TimedOut dönüş yapacak
                else if (pReply.Status==IPStatus.TimedOut)
                {
                    Console.WriteLine("Time out");
                }
            }
            //Ping sırasında oluşan hatalara PingException ile detayını ulaşabiliriz
            catch (PingException ex)
            {
                Console.WriteLine("HATA..."+ex);
            }                       
            Console.ReadKey();
        }
    }
}

www.google.com adresini pinglediğimde bana dönen değerler aşağıdaki gibi. Umarım yardımcı olabilmişimdir…

Donen_degerler

Print Friendly, PDF & Email

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir