ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Eigene IP ermitteln? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
1 2 -3- 4 5 6 7 | Thema geschlossen |
07.03.2008, 10:51 Uhr Reth Posts: 1858 Nutzer |
Zitat: Die eleganteste sicher nicht, aber für das Parsen gibt es doch XML-Parser! Ciao [ - Direktlink - ] |
07.03.2008, 14:31 Uhr MaikG Posts: 5172 Nutzer |
>Die eleganteste sicher nicht, aber für das Parsen gibt es doch XML-Parser! XML? Woher soll wer auch immer wissen wie Person xyz die IP auf seiner Seite darstellt? So wie "192.168.0.2" ists nicht immer dargestellt. [ - Direktlink - ] |
07.03.2008, 14:52 Uhr DNA Posts: 176 Nutzer |
@MaikG: Du wirst wohl mal ein paar Seiten suchen und für diese ausprogrammieren müssen. Aber http://checkip.dyndns.org/ machts Dir z.B. sehr leicht. Da ist fast kein Ballast dabei. <html><head><title>Current IP Check</title></head><body>Current IP Address: 217.93.X.Y</body></html> Das bekommst Du sicher hin. Aber mal davon abgesehen hoffe ich jetzt stark, daß Du mit "192.168.0.2" ein ganz schlechtes Beispiel gewählt hast, denn das ist eine LAN-Adresse. Kein Internet! -- C64-II, DTV-Mod, A1200/030(50), A3000T/060, CD32+SX1, CD32+SX32, Pegasos 1, Pegasos 2, Acorn RPC-SA, HP712/100, SGI Indigo, Powermac 9600/300, ... Home: http://www.2ndmoon.de ICQ:14803035 [ - Direktlink - ] |
07.03.2008, 15:06 Uhr Solar Posts: 3680 Nutzer |
Zitat: Durch Deinen GCC geht der Code nicht. Das liegt aber nicht am GCC an sich, sondern an Deiner Umgebung. @ Reth: XML-Parser zum Extrahieren einer IP aus einer Webseite? Ein ganz kleines bißchen Overkill, oder? Da tut's auch ein halbgarer sed... ;-) [ Dieser Beitrag wurde von Solar am 07.03.2008 um 15:27 Uhr geändert. ] [ - Direktlink - ] |
07.03.2008, 15:28 Uhr akl Posts: 265 Nutzer |
@MaikG: >>Ein weiterer möglicher Hack wäre, die HTML-Statusseite des Routers >>abzurufen und zu parsen - aber das wäre natürlich auf den konkreten >>Router zugeschnitten, keine generische Lösung. >Ich hab doch gar keinen Router. Wie wär's, wenn Du einfach mal beschreibst, wie genau Du in's Netz gehst, wie die "Topologie" Deines LANs (falls vorhanden) überhaupt ist, welchen TCP-Stack Du verwendest und wie er sich einwählt (z.B. PPPoE). Davon abgesehen ist ein Router dringend zu empfehlen. [ - Direktlink - ] |
07.03.2008, 15:59 Uhr Reth Posts: 1858 Nutzer |
Zitat: Nicht zum Parsen aus einer Website! Das ist doch viel zu unsicher (morgen ändert man dort das Layout und/oder die IDs bzw. Namen und schon wars das)! Ich sprach immer von Webservices! Diese haben eine fest definierte Schnittstelle und kommuniziert wird mit Hilfe von XML über HTTP. Leider kenne ich nur unter Java ein Framework für Webserviceunterstützung (Axis). Aber das wäre ein sichererer, standardisierter Weg! Ciao [ - Direktlink - ] |
07.03.2008, 16:12 Uhr DNA Posts: 176 Nutzer |
Weiterhin gibt es - eine Extension für PHP, mit welcher man Webservices bereitstellen kann. - oder über den IIS. Die Erstellung erfolgt dann über C#, oder einer anderen .net-Sprache -- C64-II, DTV-Mod, A1200/030(50), A3000T/060, CD32+SX1, CD32+SX32, Pegasos 1, Pegasos 2, Acorn RPC-SA, HP712/100, SGI Indigo, Powermac 9600/300, ... Home: http://www.2ndmoon.de ICQ:14803035 [ - Direktlink - ] |
07.03.2008, 17:28 Uhr MaikG Posts: 5172 Nutzer |
>Durch Deinen GCC geht der Code nicht. Das liegt aber nicht am GCC >an sich, sondern an Deiner Umgebung. Ich schliesse das ja nicht aus, andere Programme gehen jedoch durch. Aber du hast es nicht auf Amiga-gcc probiert oder? >Wie wär's, wenn Du einfach mal beschreibst, wie genau Du in's Netz >gehst, wie die "Topologie" Deines LANs (falls vorhanden) überhaupt >ist, welchen TCP-Stack Du verwendest und wie er sich einwählt >(z.B. PPPoE). Soll ja eine universelle lösung sein. >Nicht zum Parsen aus einer Website! Das ist doch viel zu unsicher >(morgen ändert man dort das Layout und/oder die IDs bzw. Namen >und schon wars das)! Mein ich ja. >Ich sprach immer von Webservices! Davon hab ich keine Ahnung. [ - Direktlink - ] |
07.03.2008, 17:57 Uhr Solar Posts: 3680 Nutzer |
Zitat: Nein, "nur" auf gcc 3.? unter Solaris (wo -lnsl notwendig ist) und gcc 4.1.2 unter Linux (wo's auch ohne geht). Nachher probier' ich es auch noch unter GCC 3.3 unter Windows / Cygwin wenn Du magst. Bei Dir scheinen die Header nicht zur Konfiguration zu passen, oder etwas in der Richtung. Was sagen den die übrigen hier anwesenden Amiga-Entwickler? Ich kann mir irgendwie nicht vorstellen, daß das "normal" ist. Und wenn Deine C-Umgebung 'nen Knacks hat, macht das ganze Programmieren doch keinen Spaß mehr. Zitat: Ich auch nicht. Sind aber auch kein Hexenwerk. Wobei ich der Einfachheit halber tatsächlich mit wget und sed zu Werke gehen würde. Wenn die Seite sich so verändert, daß ein sed in's Leere greift, dann muß man höchstwahrscheinlich auch an einen ausgewachsenen XML-Parser Hand anlegen. [ - Direktlink - ] |
07.03.2008, 18:38 Uhr Wishmaster Posts: 140 Nutzer |
So läuft es:code:#include <unistd.h> #include <netdb.h> #include <stdio.h> #include <string.h> struct in_addr { unsigned long s_addr; }; #include <arpa/inet.h> int main() { struct hostent * host; char hostname[200]; if ( gethostname( hostname, 200 ) == 0 ) { int i; host = gethostbyname( hostname ); printf( "Hostname: %sn", host->h_name ); for ( i = 0; host->h_aliases[i] != 0; ++i ) { printf( "Alias #%d: %sn", i, host->h_aliases[i] ); } for ( i = 0; host->h_addr_list[i] != 0; ++i ) { struct in_addr in; memcpy( &in.s_addr, host->h_addr_list[i], sizeof( in.s_addr ) ); printf( "%sn", inet_ntoa(in) ); } } return 0; } Alternativ kannst du auch in gg:includes/arpa/inet.h ein #include <netinet/in.h> hinzufügen -- Pegasos MorphOS [ Dieser Beitrag wurde von Wishmaster am 09.03.2008 um 12:14 Uhr geändert. ] [ Dieser Beitrag wurde von Wishmaster am 09.03.2008 um 12:25 Uhr geändert. ] [ - Direktlink - ] |
07.03.2008, 18:43 Uhr Wishmaster Posts: 140 Nutzer |
Bekomme aber nur die Adresse des Rechners, nicht die des Routers. -- Pegasos MorphOS [ Dieser Beitrag wurde von Wishmaster am 07.03.2008 um 18:44 Uhr geändert. ] [ - Direktlink - ] |
07.03.2008, 18:47 Uhr Reth Posts: 1858 Nutzer |
Zitat: Nur wenn Du den XML-Parser für die HTML-Seite nimmst, ich sprach aber wie gesagt von Webservices, deren XML-Antwort standardisiert ist (jeder Webservice definiert seine Schnittstelle selbst) und mit einem entsprechenden Parser bearbeitet werden kann. Ciao [ - Direktlink - ] |
07.03.2008, 19:49 Uhr woop Posts: 67 Nutzer |
Meiner Meinung nach sind die vorgeschlagenen Lösungen ziemliches Frickelwerk und werden so umgesetzt in der weiten Welt immer wieder Probleme machen. Das liegt allerdings weniger an den Lösungen selbst, sondern an der Anforderung "Wie kriege ich "meine Internet IP4" raus, wenn ich hinter einem nattenden Router sitze" Die einzige Antwort darauf ist "gar nicht" Es gibt zuviele Möglichkeiten zu routen, auch ein Router kann z.B. durchaus mehrere Internet-IPs haben und diese gleichzeitig benutzen, z.B. nach Ports gefiltert oder einfach abwechselnd oder HTTP-Requests nach "draußen" können über Proxies laufen, oder oder oder... Zuverlässig ermitteln kann man nur die IPs der zu dem Rechner gehörenden Interfaces. [ - Direktlink - ] |
07.03.2008, 22:10 Uhr MaikG Posts: 5172 Nutzer |
@Wishmaster compilert ohne fehler oder Warnungen. Aber da kommt nur folgendes zusammen mit Enforcer Hits: Hostname: (null) Alias #0: òä Alias #1: Alias #2: Alias #3: Alias #4: Alias #5: Alias #6: exec 40.10 (15.7.93) Alias #7: Alias #8: ÿÿÿÿþ Alias #9: Alias #10: @Solar Hab nur V2.9x. Ist denn das Library zeugs auf Linux/Windows nicht anders als bei AOS? [ - Direktlink - ] |
09.03.2008, 12:10 Uhr Wishmaster Posts: 140 Nutzer |
@MaikG: versuche es eventuell so noch einmal. Bei mir lief es so. code:.. struct in_addr { u_int32_t s_addr; }; .. -- Pegasos MorphOS [ - Direktlink - ] |
09.03.2008, 18:26 Uhr MaikG Posts: 5172 Nutzer |
>versuche es eventuell so noch einmal. Geht nicht. Da wird von der Null seite + x gelesen. [ - Direktlink - ] |
09.03.2008, 18:50 Uhr Beeblebrox Posts: 723 Nutzer |
@MaikG: ich habe mal ein Tool gebraucht das mir unter Windows die IP rausgibt. Weil ich keine Erfahrung mit der Windows-API hatte habe ich einfach von einer Batch netstat aufgerufen, die Ausgabe in eine Datei umgeleitet und dann ein kleines Prg. geschrieben daß die Ausgabe extrahiert. Evtl könntest Du umständlich mit wget eine der Webseiten aufrufen die die IP anzeigen und diese anschliessend aus der html-Seite extrahieren. Weiß aber nicht ob diese dynamische Webseiten-IP-Anzeige mit wget funzt. Andererseits geht es dann vielleicht sogar wenn man hinter einem Router sitzt. -- >>> bEeBlEbRoX <<< http://www.endlosstudent.de [ - Direktlink - ] |
09.03.2008, 22:43 Uhr Maja Posts: 15429 Nutzer |
Hinter einem Router bekommt man immer nur die interne IP im (W)LAN, weil dem System die externe IP nicht bekannt ist. Es sei denn, man fragt die WAN-IP vom Router direkt ab. Was aus guten Gründen nicht so einfach möglich ist. @MaikG ARexx? http://aminet.net/package/comm/tcp/AWEBGetIP http://aminet.net/package/comm/tcp/rxGetIP [ - Direktlink - ] |
10.03.2008, 11:35 Uhr MaikG Posts: 5172 Nutzer |
Netstat gibt nur folgendes aus: Proto Recv-Q Send-Q Local Address Foreign Address (status) (nichts weiter) Ja, gut beim AWEB rexx ist es das gleiche wie seite holen und parsen. Da hat man dann die Seitenabhängigkeit + die Abhängigkeit von AWeb. Einige benutzen auch IBrowse oder ganz wenige noch Voyager oder den neuen Browser. Das andere Script kann ich nicht testen, weil ich die library nicht finde. [ - Direktlink - ] |
10.03.2008, 12:47 Uhr Maja Posts: 15429 Nutzer |
@MaikG: Als Programmierer könntest Du eventuell in der Lage sein, den Inhalt oder Teile des Inhalts eines dieser Skripte entsprechend deiner Zwecke einzusetzen.... [ - Direktlink - ] |
10.03.2008, 13:24 Uhr akl Posts: 265 Nutzer |
@woop: Dass alle Lösungen (gleich) schlecht sind, hilft niemandem, der ein reales Problem lösen muss ;-) Von daher hilft es nicht, die Lösungen wegzudefinieren. Aber manchmal hilft es, das Problem neu zu formulieren - z.B. in der Form "wofür genau brauche ich die IP" und "warum genau brauche ich für diesen Zweck unbedingt diese IP"? [ - Direktlink - ] |
10.03.2008, 13:25 Uhr akl Posts: 265 Nutzer |
@MaikG: >Soll ja eine universelle lösung sein. Die gibt es nicht. Siehe Vorredner. Wenn es eine universelle Lösung ist, muss sie ein Problem lösen. Welches? [ - Direktlink - ] |
10.03.2008, 21:38 Uhr Reth Posts: 1858 Nutzer |
@akl: Die der Bestimmung seiner IP-Adresse, mit der er aktuell im Internet unterwegs ist. Kann man das denn noch deutlicher formulieren? Denke nicht! Fast universelle Lösungen wurden folgende vorgeschlagen:
Die erste Lösung ist noch weniger universell, da sie von der Gestaltung der Website abhängt. Die 2. Lösung ist etwas universeller, da Webservices eine fest definierte Schnittstelle anbieten und sich diese nur ändert, wenn sich der Dienst ändert. Zum Thema Webservices dürfte es genug Nachschlagestellen online geben. Ciao [ - Direktlink - ] |
11.03.2008, 01:34 Uhr Maja Posts: 15429 Nutzer |
Zitat: Bestimmung der/einer WAN-IP eines natenden Routers vom Client aus, ohne den Router selbst zu "fragen". Zitat: Das will er aber nicht bzw. kriegt es nicht auf die Reihe. Womit sich so langsam herauskristalisiert, wo das eigentliche Problem liegt. Mir schwant, er hat bislang noch nicht verinnerlich, warum er diese IP nur über den Umweg Internet bekommen kann. Das könnte der gordische Knoten zwischen ihm und der Lösung des Problems sein. [ - Direktlink - ] |
11.03.2008, 02:13 Uhr woop Posts: 67 Nutzer |
Zitat: Die Anforderung lautete aber afaik "Ich will die Internet-IP ermitteln und es soll eine universelle Lösung sein"... und das läuft so nicht. Wenn doch, bitte ich um Erleuchtung Für ein spezielles Setup kriegt man natürlich eine Lösung gebastelt, aber eben nichts universelles. Auch diese ganzen Vorschläge nach dem Konzept "Webservice fragen" sind nicht universell und werden so auf einer Menge Rechner aus 64567458658 Gründen nicht funktionieren. Und sobald das jemandem klar ist, wird er hoffentlich ganz von alleine zu den Fragen "wofür genau brauche ich die IP" und "warum genau brauche ich für diesen Zweck unbedingt diese IP" kommen Gruß [ Dieser Beitrag wurde von woop am 11.03.2008 um 02:17 Uhr geändert. ] [ - Direktlink - ] |
11.03.2008, 09:28 Uhr DNA Posts: 176 Nutzer |
Zitat: *Leucht* Webservices sind ja sowas von universell, das glaubt man fast gar nicht. HTML-Parsen ist schon bissel Gefrickel, aber Webservices liefern es einem praktisch mundgrecht. Wenn man nun noch mehrere Adressen hinterlegt hat man genug Redundanz um auch einzelne Ausfälle abzufangen. Falls Du mit universell jedoch meinst dass die Lösung bis mindestens bis 2043 laufen soll, dann würde das bedeuten das die anbietende Website diesen Dienst immer anbietet und das die Website niemals gestört ist. Das kann man nicht erreichen. Sowas kann man aber mit keiner Technik erreichen. Außer der von jedem zu nutzende $Volksprovider verteilt nur noch $Volksrouter, welche eine definierte Schnittstelle anbieten, auf die man sich immer beziehen kann. Aber das haben wir nicht. Eventuell sollte wir mal Herrn Schäuble darauf ansprechen, das wäre bestimmt auch was für ihn. Zitat: Das sehe ich auch komplett anders, wenn man sich vorhält, was man bekommen kann. Ohne html-Seiten mit der IP oder webservices hat man letztlich keine Chance, seine öffentliche IP in jeder Umgebung herauszufinden. Lokal bekommt man sowas nicht standardisiert ermittelt. Webservices sind da standardisiert. Man sollte halt nur schauen, dass man mehrere Dienste hinterlegt, und dass man sich Services von großen Seiten ranzieht, damit die Dienste auch noch in einer Woche verfügbar sind. Zitat:Öh, also die Reihenfolge wäre andersrum besser. Erst wissen warum ich die öffentliche IP brauch, dann verstehen dass man die nur von außen sicher ermitteln kann und dann passende Technologien nutzen um die IP zu ermitteln. Ich hier hängt's scheinbar wirklich. Mit mittlerweile auffälliger Ingnoranz wird das eigentliche Problem durch den Threadstarter ignoriert und blind an lokalen Methoden gebastelt. Es ist schon zum schreien, aber was solls. Es kann sein dass es unter Amiga ganz anders läuft, aber unter Win ist die Abfrage des Services ein Dreizeiler. In diesem Sinne, Hellau, DNA -- C64-II, DTV-Mod, A1200/030(50), A3000T/060, CD32+SX1, CD32+SX32, Pegasos 1, Pegasos 2, Acorn RPC-SA, HP712/100, SGI Indigo, Powermac 9600/300, ... Home: http://www.2ndmoon.de ICQ:14803035 [ Dieser Beitrag wurde von DNA am 11.03.2008 um 09:54 Uhr geändert. ] [ - Direktlink - ] |
11.03.2008, 10:02 Uhr MaikG Posts: 5172 Nutzer |
>Das will er aber nicht bzw. kriegt es nicht auf die Reihe. Womit >sich so langsam herauskristalisiert, wo das eigentliche Problem >liegt. Mir schwant, er hat bislang noch nicht verinnerlich, warum >er diese IP nur über den Umweg Internet bekommen kann. Komme ich wenigstens an die welche Genesis anzeigt? Also, bin ich per Modem unterwegs steht die korrekte adresse unter IP-Adresse. Bin ich per Routerähnlichen Gerät unterwegs, steht nur das Gateway dort. Aber dann könnte ich immernoch filtern was intern und was extern ist. Und wenn da halt nur internes steht kann man immernoch webservices nutzen. [ - Direktlink - ] |
11.03.2008, 10:24 Uhr DNA Posts: 176 Nutzer |
Zitat: Bist Du per Modem eingewählt, dann steht Dein Rechner direkt im Internet. In diesem (seltenen) Fall hat Dein Rechner eine öffentliche IP. Bist Du hinter einem Router, dann ist der Router eingewählt und leitet Deine Anfragen raus (Gateway) und liefert die Antworten an Dich zurück (NAT). Der Router macht in dem Fall hinter sich ein LAN auf, welches über ihn ins Inet kann. Alle Rechner haben LAN-IP's und nur der Router hat 'ne öffentliche. Du redest immer von Standardlösungen. Nimm einfach einen Webservice! Der funktioniert IMMER. Du mußt nicht rausfinden ob Du hinter einem Router bist oder direkt eingewählt und daraufhin im Quelltext verzweigen. Nimm 'nen Webservice und Du weißt mit welcher IP Du unterwegs bist. -- C64-II, DTV-Mod, A1200/030(50), A3000T/060, CD32+SX1, CD32+SX32, Pegasos 1, Pegasos 2, Acorn RPC-SA, HP712/100, SGI Indigo, Powermac 9600/300, ... Home: http://www.2ndmoon.de ICQ:14803035 [ - Direktlink - ] |
11.03.2008, 11:23 Uhr Maja Posts: 15429 Nutzer |
Zitat: Bingo! Das ist die grobe Antwort auf die Frage, wozu er die WAN-IP braucht. Geht doch! Zitat: Jawoll! Und jetzt kommt eine Frage. Funktioniert das auch zuverlässig, wenn ein Router im Steath Mode läuft? [ - Direktlink - ] |
11.03.2008, 13:08 Uhr DNA Posts: 176 Nutzer |
Zitat: Ich bin mir jetzt unsicher was Du mit Stealth Mode meinst, wird aber schon das grandiose Feature sein, dass ein Router nicht auf eine externe Anfrage antwortet anstatt ein sauberes Reject zu senden. (Was ungefähr so sinnvoll ist, wie ein Tarnnetz auf einem Eigenheim in einer Einfamilienhaussiedlung). Falls Du das meinst: JA, denn der Client fragt nach draußen, der Server antwortet und der Router reicht die Antwort zum Client durch. Das ist nix weiter als wenn Du z.B. surfen würdest, also eine Anfrage an einen Dienst, kein Anbieten eines Dienstes. <offtopic> Der Stealth Mode greift nur, wenn ein Paket von außen ungefragt kommt. Wobei der Stealth Mode eh sinnlos ist, weil der Router per Default alle Pakete auf allen Ports rejected, es sei denn es ist ein Forwarding eingerichtet (Oder ein Client im LAN ist als "exposed host" in die DMZ gestellt. Das wiederum ist auch sehr gefährlich, weil der Client ja ne extra Firewall braucht). Das der Router im Stealth Mode nicht antworten soll steigert in keinem Fall die Sicherheit und ist obendrein nicht ICMP-konform. </offtopic> Das einzige was die Verwendung von Webservices stören könnte, wäre in dem Fall eine amoklaufende, wild blinkende Personal Firewall, welche ein "unauthorisiertes" Programm auf der Maschine entdeckt. Aber solche begrenzt sinnvollen Tools gips ja zum Glück auf dem Amiga nicht, oder? Grüße, DNA -- C64-II, DTV-Mod, A1200/030(50), A3000T/060, CD32+SX1, CD32+SX32, Pegasos 1, Pegasos 2, Acorn RPC-SA, HP712/100, SGI Indigo, Powermac 9600/300, ... Home: http://www.2ndmoon.de ICQ:14803035 [ Dieser Beitrag wurde von DNA am 11.03.2008 um 13:10 Uhr geändert. ] [ - Direktlink - ] |
1 2 -3- 4 5 6 7 | Thema geschlossen |
amiga-news.de Forum > Programmierung > Eigene IP ermitteln? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |