AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung iOS Indy IdICMPClient.Ping führt auf Simulator zum Fehler

Indy IdICMPClient.Ping führt auf Simulator zum Fehler

Ein Thema von Sherlock · begonnen am 31. Aug 2017 · letzter Beitrag vom 4. Sep 2017
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.753 Beiträge
 
Delphi 11 Alexandria
 
#1

Indy IdICMPClient.Ping führt auf Simulator zum Fehler

  Alt 31. Aug 2017, 16:16
Hi,

Ich möchte in einem lokalen Netz per Ping - bevor ich weitere Kommunikationsversuche mit unter Umständen länglichen Timeouts - feststellen, ob ein Server prinzipiell da ist. Das gelingt unter Windows, aber unter iOS im Simulator führt das zum folgenden Fehler.

Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt dyld_sim ist eine Exception der Klasse EIdSocketError mit der Meldung 'Socket-Fehler # 1
' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Im Ereignisprotokoll steht

Zitat:
Erste Gelegenheit für Exception bei $00017C7C. Exception-Klasse EIdSocketError mit Meldung
'Socket-Fehler # 1
'.
Prozess dyld_sim (7063)
Ich habe mir dann eine Testapplikation zusammengeklickt, die aus einem Button, einem Label und einem IdIcmpClient besteht. Die folgenden beiden Methoden führen unter Windows zum gewünschten Ergebnis (Im Label steht "Echo")
Delphi-Quellcode:
procedure TForm11.Button1Click(Sender: TObject);
begin
  IdIcmpClient1.Ping;
end;

procedure TForm11.IdIcmpClient1Reply(ASender: TComponent;
  const AReplyStatus: TReplyStatus);
begin
  label1.Text := AReplyStatus.Msg;
end;
Unter iOS kommt weiterhin obiger Fehler.

Können die Indys unter iOS Pingen? Oder ist Pingen unter iOS verboten? Oder kann es nur der Simulator nicht?

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

AW: Indy IdICMPClient.Ping führt auf Simulator zum Fehler

  Alt 31. Aug 2017, 17:06
Was genau willst Du machen, nachdem Du einen Ping erhalten hast ? Willst Du Dich dann mit dem Server verbinden ? Wenn ja, warum nutzt Du dann nicht UDP ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.753 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Indy IdICMPClient.Ping führt auf Simulator zum Fehler

  Alt 1. Sep 2017, 07:52
Ja, ich will mich mit einem SOAP-Server (sprich Apache-Server) verbinden. Für eine Prüfung per UDP müsste ich ja auf dem Server noch einen Dienst haben, der auf ein definiertes UDP Paket antwortet, oder nicht?

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

AW: Indy IdICMPClient.Ping führt auf Simulator zum Fehler

  Alt 1. Sep 2017, 08:00
Ja, Du müsstest auf dem Server den UPDServer haben und auf dem Gerät den UDPClient. Der Client schickt eine bestimmte Nachricht ins Netz. Der Server antwortet auf die Nachricht und gibt dann die entsprechende IP-Adresse zurück. Somit hättest Du zwei Fliegen mit einer Klappe geschlagen. Du weißt, dass Dein Server da ist und welche IP-Adresse er hat.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.753 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Indy IdICMPClient.Ping führt auf Simulator zum Fehler

  Alt 1. Sep 2017, 08:42
In der Tat war das ohnehin ein Punkt, den ich noch erledigen wollte, also daß die Clients den Server ohne Konfiguration identifizieren können. Hmm, es bleiben dennoch die offenen Fragen:
Können die Indys unter iOS Pingen? Oder ist Pingen unter iOS verboten? Oder kann es nur der Simulator nicht?
Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.752 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Indy IdICMPClient.Ping führt auf Simulator zum Fehler

  Alt 1. Sep 2017, 08:45
Ja, Du müsstest auf dem Server den UPDServer haben und auf dem Gerät den UDPClient. Der Client schickt eine bestimmte Nachricht ins Netz. Der Server antwortet auf die Nachricht und gibt dann die entsprechende IP-Adresse zurück. Somit hättest Du zwei Fliegen mit einer Klappe geschlagen. Du weißt, dass Dein Server da ist und welche IP-Adresse er hat.
.. dann müsste Broadcast Nachricht geschickt werden.
Wenn dies über verschiedene Netze geschehen soll - müssten die Router Broadcast Nachrichten weiterleiten.
Siehe auch: https://stackoverflow.com/questions/...across-subnets

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Indy IdICMPClient.Ping führt auf Simulator zum Fehler

  Alt 1. Sep 2017, 10:17
https://forums.embarcadero.com/threa...hreadID=117226
Zitat von Remy Lebeau (TeamB):
TIdIcmpClient does not work on iOS:

http://codeverge.com/embarcadero.del...on-ios/1074816

TIdIcmpClient uses a RAW socket to implement the ICMP protocol manually.
On most platforms, use of RAW sockets is restricted to admin users only.
So you would likely have to gain root access to your iOS device in order
to use TIdIcmpClient, assuming iOS even supports RAW sockets at all.

You will have to find another solution to send pings on iOS.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.753 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Indy IdICMPClient.Ping führt auf Simulator zum Fehler

  Alt 1. Sep 2017, 10:29
Ah, Fudge... das hatte ich befürchtet. Ich habe ja schon für Win7 einen Sonderweg eingebaut (weil da auch Ping nur mit Adminrechten geht). Muss ich halt etwas finden, was unter iOS funktioniert. Danke!

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.003 Beiträge
 
Delphi 2009 Professional
 
#9

AW: Indy IdICMPClient.Ping führt auf Simulator zum Fehler

  Alt 1. Sep 2017, 10:29
Ja, ich will mich mit einem SOAP-Server (sprich Apache-Server) verbinden.
Bei SOAP über HTTP bietet sich doch eine Indy HTTP Client Komponente mit einem kleinen Timeout an.

(Der Admin könnte den Server auch so konfiguriert haben dass er nicht auf Ping reagiert, daher ist es für den Test am aussagekräftigsten einen Verbindungsversuch mit dem konkreten Protokoll zu machen - z.B. ein HEAD auf die SOAP Endpoint-URL)
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.753 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Indy IdICMPClient.Ping führt auf Simulator zum Fehler

  Alt 1. Sep 2017, 11:09
Ja, das verkleinern des Timeouts...das ist so eine Sache. Initial mag das Sinn ergeben. Nur ist mein Server so aufgebaut, das er regelmäßig neu startet, und ich da noch ein klitzgkleines Problem mit dem Aufbau der ersten Verbindung nach dem Neustart habe. Diese dauert nämlich extrem viel länger als sonst. Das ist aber evtl. in den Griff zu kriegen.

Andererseits ist nichts schneller als ein Ping. Und so habe ich vor jedem Zugriff bisher ein Ping, das prüfen soll, ob der Server prinzipiell noch erreichbar ist. Das kann nämlich aufgrund der Natur der Server (stehen frei im Raum herum und sind durch jedermann von LAN oder Strom versehentlich bis absichtlich trennbar) jederzeit geschehen. UDP als Alternative ist gerade im mobile Bereich so eine Sache. Viele Switche filtern UDP in andere Subnetze raus, und ein mobile Device könnte im WLAN einem anderen Subnetz zugeordnet sein.
Mir bleibt eigentlich nichts übrig als zu versuchen zB das hier https://developer.apple.com/library/...inkElementID_2 irgendwie in eine dylib zu verfrachten und die dann aus meiner Anwendung für den iOS-Fall anzusprechen.

Ediths weitere Recherchen ergaben eine vermutlich bessere Lösung: http://delphiworlds.com/2013/11/chec...th-delphi-xe5/ Dave Nottage stand vor wenigen Jahren vor dem gleichen Problem wie ich, und hat sich reingekniet. Offenbar funktioniert die Lösung nicht mit dem iOS-Simulator (as designed by Apple), und ich muss mir jetzt die Mühe machen, ein Testprogramm vorzubereiten. Es wäre cool, wenn das einfacher ginge. *Seufz*

Edith gibt mir ne Ohrfeige und sagt: Dafür gibts das Wildcard-Profile, Du Honk!

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann

Geändert von Sherlock ( 1. Sep 2017 um 12:26 Uhr) Grund: Weil ich es nicht ganz so gut kann
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz