Laden...

SocketException: Der angegebene Host ist unbekannt

Erstellt von basti2005 vor 11 Jahren Letzter Beitrag vor 11 Jahren 8.696 Views
Thema geschlossen
B
basti2005 Themenstarter:in
2 Beiträge seit 2010
vor 11 Jahren
SocketException: Der angegebene Host ist unbekannt

Hey, ich habe mir ein kleines Tool geschrieben was den Online Status prüft.

Bin auch so weit schon fertig - jetzt kommt aber ein fehler beim Starten wenn die Internet Verbindung fehlt oder diese plötzlich getrennt wird.

Könnt ihr euch das ganze mal ansehn ?

Danke im Vorraus


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
using Ping_Tool;


namespace Online
{
    public partial class online : Form


    {
        public online()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Start();
            //Ping Sender = new Ping();
            //PingReply Result = Sender.Send("Google.de");
            //if (Result.Status == IPStatus.Success)
            //{


            //    label_online.Text = ("ONLINE");
            //    label_online.BackColor = System.Drawing.Color.Green;
            //}

            //else
            //{
            //    label_online.Text = ("OFFLINE");
            //    label_online.BackColor = System.Drawing.Color.Red;

            //}
        
        }

           private void label_online_Click(object sender, EventArgs e)
        {



         

            //Ping Sender = new Ping();
            //PingReply Result = Sender.Send("Google.de");
            //if (Result.Status == IPStatus.Success)
            //{


            //    label_online.Text = ("ONLINE");
            //    label_online.BackColor = System.Drawing.Color.Green;
            //}

            //else
            //{
            //    label_online.Text = ("OFFLINE");
            //    label_online.BackColor = System.Drawing.Color.Red;

            //}
           

        }

           private void button_info_Click(object sender, EventArgs e)
           {
               Form_Info frm = new Form_Info();
               frm.Show();
           }

           private void ticker(object sender, EventArgs e)
           {
                           Ping Sender = new Ping();
            PingReply Result = Sender.Send("Google.de");
            if (Result.Status == IPStatus.Success)

            {


                label_online.Text = ("ONLINE");
                label_online.BackColor = System.Drawing.Color.Green;
            }

            else
            {

               if (Result.Status == IPStatus.TimedOut)
                label_online.Text = ("OFFLINE");
                label_online.BackColor = System.Drawing.Color.Red;

            }
        }
           }




    }


211 Beiträge seit 2008
vor 11 Jahren

Hokuspokus Fidibus

Du postest zwar richtig viel Code aber leider lässt du deine Entscheidende PING Klasse mal eben weg... Ob da nun sauberes Exceptionhandling drin ist... kann ich bzw. wir hier nur raten 😃....

Was der genaue Fehler ist (Stichwort: Fehlermeldung) teilst du uns leider auch nicht weg. Spontan geraten hätte ich un einfach mal.. du packst um deinen schönen Aufruf:

PingReply Result = Sender.Send("Google.de");

ein try/catch drum rum und wirst dann eine korrekte Fehlerbehandlung bauen können 😉.

Lies dich mal ein auf MSDN zum Thema Exceptionhandling

Kontakt & Blog: www.giesswein-apps.at

B
basti2005 Themenstarter:in
2 Beiträge seit 2010
vor 11 Jahren

Hier die etsprechende Fehlermeldung siehe Anhang.
Und im Detail:

Fehlermeldung:
System.Net.NetworkInformation.PingException: Während einer Pinganforderung ist eine Ausnahme aufgetreten. ---> System.Net.Sockets.SocketException: Der angegebene Host ist unbekannt
bei System.Net.Dns.GetAddrInfo(String name)
bei System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6)
bei System.Net.Dns.GetHostAddresses(String hostNameOrAddress)
bei System.Net.NetworkInformation.Ping.Send(String hostNameOrAddress, Int32 timeout, Byte[] buffer, PingOptions options)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.Net.NetworkInformation.Ping.Send(String hostNameOrAddress, Int32 timeout, Byte[] buffer, PingOptions options)
bei System.Net.NetworkInformation.Ping.Send(String hostNameOrAddress)
bei Online.online.ticker(Object sender, EventArgs e) in D:\DROPBOX\Dropbox\Programmierung\Online\Online\online.cs:Zeile 83.
bei System.Windows.Forms.Timer.OnTick(EventArgs e)
bei System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

V
66 Beiträge seit 2010
vor 11 Jahren

Wie soll er auch, wenn Du keine Verbindung hast.

Aber das sind Grundlagen, daher beachte bitte [Hinweis] Wie poste ich richtig? Punkt 1.1 und 1.1.1. Danke.

Hinweis von herbivore vor 11 Jahren

Diese Einschätzung kann ich mir nur anschließen. Immerhin muss man bei Netzwerkverbindungen immer mit Exceptions rechnen und diese daher auch behandeln.

Davon abgesehen ist der Exception-Text auch aussagekräftig und eindeutig.

Außerdem ist es nicht nett und nicht erwünscht, einfach Code zu posten und uns dann den Fehler suchen zu lassen, siehe [Hinweis] Wie poste ich richtig? Punkt 4.

Darauf, dass zu einer Problembeschreibung immer auch dazugehört, von alleine die exakte Fehlermeldung anzugeben, wurdest du schon hingewiesen. Es steht auch in [Hinweis] Wie poste ich richtig? Punkt 5.

Thema geschlossen