Ping+ Uygulaması ve C# Kaynak Kodları

Ping+ Uygulaması ve C# Kaynak Kodları

Network cihazlarını kontrol etmek için basit bir uygulamaya ihtiyacınız var. Sadece sizin yapacağınız bir text dosyasından ip adreslerini alması ve sürekli ping atarak kesildiği durumda ekrana bilgi basmasını istiyorsunuz.

Bilgi işlem tarafında basit bir uygulama ihtiyacı aslında ama bulamadığım için yazmaya karar verdim. Ping+ olsun adı

uygulama ile aynı dizinde olan ipadresleri.txt dosyasından adresleri okuyor ve 1 dakika ara ile ping atıyor. eğer erişemiyorsa zaman ile birlikte ekrana basıyor.

Eğer bir text üzerine yazmasını isterseniz komut satırından

ping+ > C:\Users\barbaros.kuscular\Desktop\sonuc.txt

Belirttiğiniz text dosyasına kontrol ederek log kaydetmesinis sağlayabilirsiniz.

Biraz geliştirilerek event viewer üzerine basabilir yada 514 portundan syslog sunucunuza gönderebilirsiniz. biraz uğraşmak lazım.

Uygulamayı indirerek test edebilirsiniz. 200 cihaza kadar destekliyor, isterseniz kaynak kodlarından değiştirebilirsiniz.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Threading;
using System.IO;
using System.Net.NetworkInformation;

namespace ping_
{ 
    public class Program
    {
        public static string hata1 = "Geçerli bir ip adresi değildir";
        public static string[] ipadresleri = new string[200];
        public static Thread[] thread = new Thread[200];

        static void Main(string[] args)
        {
            while (true) { 
            try
            {
                int i = 0;
                StreamReader oku = File.OpenText("ipadresleri.txt"); 
                while (!oku.EndOfStream) 
                {
                    i++;
                    ipadresleri[i] = oku.ReadLine();
                    thread[i] = new Thread(() =>
                    {
                        //int temp = i;       // not here
                        ipkontrol(ipadresleri[i]);
                    });
                    thread[i].Start();
                    Thread.Sleep(10);
                }       
                // dosyamızı kapatıyoruz..
                oku.Close();
            }
            catch
            {
                Console.WriteLine("dosya bulunamadı");
            }
                Thread.Sleep(60000); 
            }
        }
        public static void ipkontrol(string ip)
        {
            try
            {
                Ping pingat = new Ping();
                PingReply bilgi;
                bilgi = pingat.Send(ip);
                if (bilgi.Status == IPStatus.Success)
                {
                    //Console.WriteLine(ip + " cihazı aktif");
                }
                else if (bilgi.Status == IPStatus.TimedOut)
                {
                    Console.WriteLine(DateTime.Now + " | " + ip + " cihazı pasif");
                }
                else
                {
                    Console.WriteLine(DateTime.Now + " | " + ip + " cihazı ağda yok");
                }
            }
            catch
            {
                System.Console.WriteLine(DateTime.Now + " | " + ip + " " + hata1);
            }
        }
    }
}

Saygılarımla,

Bir cevap yazın

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