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.
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 😃
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.
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")
;