• 06-11-2013, 10:45:36
    #1
    Merhabalar,

    Yapmış olduğun web sitelerinin aktif olup olmadıklarını kontrol eden küçük bir uygulama yazmak istiyorum fakat. Bazı sorunlarım var.

    C# 'da şu şekilde bir işlem yapıyorum.

            public Form1()
            {
                InitializeComponent();
                txtUrl.KeyDown += txtUrl_KeyDown;
                bKontol.Click += bKontol_Click;
            }
    
            void bKontol_Click(object sender, EventArgs e)
            {
                bool sonuc = kontrol();
                if (sonuc)
                {
                    MessageBox.Show("Yayında");
                }
    
                else
                {
                    MessageBox.Show("Yayında Degil");
                }
            }
            void txtUrl_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.Control == true && e.KeyCode == Keys.Enter)
                {
                    txtUrl.Text = "www." + txtUrl.Text + ".com";
                }
            }
            bool kontrol()
            {
                string source = txtUrl.Text;
                try
                {
                    TcpClient tcp = new TcpClient(source, 80);
                    tcp.Close();
                    return true;
                }
                catch
                {
                    return false;
                }
            }

    Bu kodlar ile kontrol yaptığım zaman süresi dolmuş bir siteye bile yayında diyor.
    Ben sadece gerçekten çalışan sitemin kontrolünü yapmak istiyorum.

    Gerçekten aktif olan bir sitenin kontrolünü nasıl sağlarım?
  • 06-11-2013, 11:09:54
    #2
    Edit
  • 06-11-2013, 11:10:38
    #3
    Bu sağlıklı bir yöntem değil mesela süresi dolmuş bir alan adını girdiğiniz zaman bir url ye yönleniyor ve kaynak kodları mutlaka 0'dan büyük olacağı için yayında diyecek.
  • 06-11-2013, 11:16:48
    #4
    Haklısın. Aklıma başka bişey gelmedi inan. Yardımcı olmak isterdim
  • 06-11-2013, 11:17:23
    #5
    Çok sağ ol yine diğer arkadaşlardan başka hangi yöntemler kullanıla bilir fikir bekliyorum.

    Teşekkürler.
  • 06-11-2013, 11:28:44
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    O şekilde olmaz. Sonuçta domain'in süresi bitse bile bazen ns değiştirip park ettiriyorlar.
    En iyi yol bir api veya webservis kullanmak.
    http://www.webservicex.net/whois.asmx?op=GetWhoIS

    Veya
    TcpClient objTCPC = new TcpClient ("whois.networksolutions.com", 43);
    string strDomain = "domain.com" + "rn"; 
    byte[] arrDomain = Encoding.ASCII.GetBytes(strDomain);
    
    Stream objStream = objTCPC.GetStream();
    objStream.Write(arrDomain, 0, strDomain.Length);
    
    StreamReader objSr = new StreamReader(objTCPC.GetStream(), Encoding.ASCII);
    string strServerResponse = objSr.ReadToEnd();
    strServerResponse  = Regex.Replace(strServerResponse, "n", "<br>");
    string status = strServerResponse; 
    objTCPC.Close();
  • 06-11-2013, 17:19:41
    #7
    Aslında sana sonuç donuyor fakat sen bunu kontrol etmiyorsun.
    Dönen response icerisinde site hakkında sana durum kodları gönderiyor bunları incelemen gerekir.

    Http Get ile daha basit bir şekilde çözebilirsin.