Laden...

Ping Socket unter Windows CE

Erstellt von FrankenDerStein vor 7 Jahren Letzter Beitrag vor 7 Jahren 2.100 Views
FrankenDerStein Themenstarter:in
72 Beiträge seit 2015
vor 7 Jahren
Ping Socket unter Windows CE

Guten Tag,

Ich habe mal eine Frage.

Wie realisiere ich einen Ping Socket unter WinCE?

Diese Frage stelle ich, weil

 Socket host = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp);

nicht unterstützt wird.

Bei meiner suche im Internet bin ich auf UDP Ping gestoßen, aber ich weiß nicht ob das so das wahre ist.

Ich hoffe ihr wisst was darüber.

Mit freundlichen grüßen, FrankenderStein.

T
708 Beiträge seit 2008
vor 7 Jahren

Hallo FrankenDerStein,
leider kenne ich keine richtig funktionierende Ping-Funktion.
Habe einige Beispiele ausprobiert und unter CE5 ging teilweise die iphlpapi.dll. Lässt mich aber in aktuellen Versionen auch im Stich.

Wenn es nur darum geht einen Server zu checken, kannst Du das ganz einfach über System.Net.Dns lösen:


         public IPAddress TargetIp
        {
            get { return _targetIp; }
            set { _targetIp = value; }
        }
        private string _host = "google.de";
        public string Host
        {
            get { return _host; }
            set
            {
                _host = value;
                if (_host != string.Empty)
                    GetHost();
            }
        }
        private void GetHost()
        {
            try
            {
                TargetIp = Dns.GetHostEntry(Host).AddressList[0];
            }
            catch (Exception ex)
            {
                //invalid host, unable to get IP
                [...]
            }
        }

Hostnamen übergeben, IP zurück bekommen 😃

FrankenDerStein Themenstarter:in
72 Beiträge seit 2015
vor 7 Jahren

Ich danke dir für deine Rückmeldung, aber leider brauch ich auch Informationen zur Verbindungsqualität, da reicht sowas leider nicht.

Schöne Grüße, FrankenDerStein.

C
224 Beiträge seit 2009
vor 7 Jahren

Auf dem PC gibt es System.Net.NetworkInformation.Ping.
Gibt es sowas nicht auch für CE?

Ich denke Da an OpenNETCF.Net.NetworkInformation.Ping

Hier ein simples Beispiel für den PC:



using System.Net.NetworkInformation;

(...)



Ping ping = new Ping();

//Senden der Anfrage
PingReply reply = ping.Send
(
	"127.0.0.1", //Host
	1000, // Timeout in Millisekunden
	new byte[1024], //Buffer
	new PingOptions()
);

//Statusüberprüfung
if (reply.Status == IPStatus.Success)
	System.Windows.Forms.MessageBox.Show(reply.RoundtripTime + " ms");
else
	System.Windows.Forms.MessageBox.Show("Fehler")
;