Zum Inhalt springen

zukzuk

Mitglieder
  • Gesamte Inhalte

    18
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von zukzuk

  1. zukzuk

    Regex-Frage zu Java

    Ist dann halt wohl ein Fall von "is' halt so, weil's in Java eben so is'". Danke, zukzuk
  2. zukzuk

    Regex-Frage zu Java

    Also das Problem habe ich jetzt gelöst mit: (?s) (Single-Line-Attribut). Damit matcht "." auch auf Newlines (soweit wie unter Perl). Ich verstehe aber nicht, warum man bei Java die gesamte Regex von vorne bis hinten deklarieren muss. (also quasi immer "^...$")) bzw. warum Java das sonst implizit macht. Denn intuitiv hätte ich erwartet, dass egal welcher String auf ".*" matcht (sofern es denn ein String ist ;-)). Und das ist bei Java eben nicht der Fall, wenn der überprüfte String Zeilenumbrüche enthält.
  3. zukzuk

    Regex-Frage zu Java

    Hallo stefan.macke, was den Multilinemodus angeht: so was ähnliches hatte ich auch noch in den hintersten Ecken meines Hinterkopfes, aber ich weiß bei bestem Willen nicht mehr, wie man das dann in Java schreibt. Kurz googlen hat mir auch nicht geholfen. Ich bin übrigens Perl-Regexen gewohnt. Da matcht ".*" selbstverständlich auf einen String mit Zeilenumbrüchen (auf die erste Zeile ;-). Offenbar setzt Java irgendwelche "Anchors" um die Regexen, also sowas wie "\A.*\Z" bei Perl. Jetzt muss mir nur noch jemand erklären, wie konkret man den Multiline-Modus bei Java anschaltet, dann probiere ich weiter ;-).
  4. zukzuk

    Regex-Frage zu Java

    Also von wegen Codequalität: das ist mein allererster Gehversuch in Java. Ich versuche da auch kein fertiges Produkt auszuliefern, sondern ich möchte etwas bestimmtes nachprüfen. Dass der Regex-Match bei leerem String "True" zurück gibt, finde ich nicht so interessant, da ".*" für "beliebig viele Zeichen" steht (also auch gar keins). Was ich nicht verstehe, ist, warum er "False" zurück gibt, wenn ein Newline-Character im überprüften String enthalten ist. Also bspw. "Foo\nBar" matcht nicht auf ".*" (zumindest in Java!).
  5. zukzuk

    Regex-Frage zu Java

    Anders gefragt: Was muss in <string> stehen, so dass <string>.matches(".*") false zurückliefert? (weil das passiert mir gerade :-). Edit: Nach nochmaliger Betrachtung hat sich herausgestellt, dass <string> keinen Zeilenumbruch enthalten darf, damit dieser Regex matcht. Wie formuliere ich den Regex denn in Java so, so dass es keinen Unterschied macht, ob Zeilenumbrüche oder sonstiger Whitespace da stehen? Ich möchte einfach, dass der Regex-Match auf ".*" matcht, egal wie viele Zeilenumbrüche in dem überprüften String stehen.
  6. zukzuk

    Regex-Frage zu Java

    Hallo, ich habe folgende Frage zu Regexen in Java. Das Problem ist, dass mein Regex-Match immer fehlschlägt (= false): String str = ".*"; if (result.matches(str)) { JOptionPane.showMessageDialog(null, "gebe Falsch zurück (Regex matcht!)", "Test", JOptionPane.OK_CANCEL_OPTION); return false; } else { JOptionPane.showMessageDialog(null, "gebe Richtig zurück (Regex matcht nicht!)", "Test", JOptionPane.OK_CANCEL_OPTION); return true; } Ein trivialer Match mit "Fooo".matches(".*") funktioniert dagegen. Evtl. ist das ein Unicode-Problem, da in dem String "kaputte" Umlaute auftauchen? (umgebender Code s. u.). Danke für jede Hilfe. zukzuk Mein umgebender Code: private boolean pmtu_success(String ip, int size) throws IOException { boolean isWindows = System.getProperty("os.name").toLowerCase().contains("win"); ProcessBuilder processBuilder; if (isWindows) { processBuilder = new ProcessBuilder("ping", "-f", "-n", "1", "-l", "" + size, ip); } else { processBuilder = new ProcessBuilder("ping", "-c", "1", "-s", "" + size, "-M", "do" + ip); } Process proc; proc = processBuilder.start(); BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); StringBuilder builder = new StringBuilder(); String line = null; try { while ( (line = reader.readLine()) != null) { builder.append(line); builder.append(System.getProperty("line.separator")); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String result = builder.toString(); JOptionPane.showMessageDialog(null, result, "Test", JOptionPane.OK_CANCEL_OPTION); String str = ".*"; if (result.matches(str)) { JOptionPane.showMessageDialog(null, "gebe Falsch zurück (Regex matcht!)", "Test", JOptionPane.OK_CANCEL_OPTION); return false; } else { JOptionPane.showMessageDialog(null, "gebe Richtig zurück (Regex matcht nicht!)", "Test", JOptionPane.OK_CANCEL_OPTION); return true; } }
  7. zukzuk

    Path MTU Discovery

    Hallo zusammen, ich suche nach einer (wenn möglich natürlich bereits fertigen ;-) Lösung, um eine Path MTU Discovery zu einer bestimmten IP-Adresse mittels Java durchzuführen. Könnte mich da evtl. jemand in die richtige Richtung schubsen? https://en.wikipedia.org/wiki/Path_MTU_Discovery Danke im Voraus, zukzuk
  8. Also Google Maps wird doch IIRC per Iframe direkt in HTML eingebunden, oder? Was ich vorgehabt hätte (wenn ich das Vorhaben denn wirklich noch in dieser Form umsetzen würde), wäre, einen HTTP-Request per Javascript zu machen (Ajax), da ich ja die Zeit messen möchte, die dieser benötigt. Und da gibt es m. E. schon Einschränkungen: https://www.google.de/?#q=xmlhttprequest+same+origin+policy Aber soweit ich beim Überfliegen gesehen habe, kann man da wohl "drumrumarbeiten". Dass mit ICMP Ping ein Echo Request gemeint ist, sollte eigentlich klar sein ;-). Dass ich den grundsätzlichen Ablauf nicht hinterfragen möchte, da dieser vorgegeben ist, hatte ich auch schon geschrieben. Mir ist auch klar, dass Netzwerkprobleme vielschichtig sein können, aber trotzdem danke für deine Ausführungen.
  9. Jupp, diesen Workaround hatte ich als Möglichkeit im Eingangspost auch schon erwähnt, obwohl meine Idee eben ein HTTP-Request auf eine leere Datei war. Kann Javascript eigentlich einen HTTP-Request auf eine andere (Sub-)Domain als die, von der der JS-Code geladen wurde, durchführen? Wenn nein, müsste man die Test-Webseite auf derselben Domain bzw. IP-Adresse laufen lassen, die "getestet" werden soll, oder alternativ mit irgendwelchen Redirect-Konstrukten arbeiten, die das Ergebnis weiter verfälschen. Aber Ich denke schon, dass die Anforderungen ICMP-Ping, TCP- und UDP-Request auf bestimmte IPs und Path MTU Discovery (ICMP) zu bestimmter IP fix vorgegeben sind und daran nichts zu rütteln ist.
  10. Das ist natürlich richtig. Wenn der Seitenaufruf nicht klappt, weiß man aber auch gleich, dass das Netz "ganz" weg ist (fragt sich dann nur welches ^^) ;-). Zudem muss ich noch etwas relativieren, es geht wohl auch darum, die Voraussetzungen für ein bestimmtes Vorhaben abzuklären (welches, ist mir nicht ganz klar), für das eben 2 Bedingungen gegeben sein müssen müssen: a: Ping zu bestimmter Adresse muss klappen b: TCP- bzw. UDP-Verbindung zu bestimmter Adresse/Port müssen klappen Außerdem soll die maximale MTU zu einer bestimmten IP ermittelt werden (nicht die im Betriebssystem eingestellte, sondern die tatsächlich mögliche, also Ermittlung per ICMP) Die Vorgehensweise als solche will ich auch gar nicht hinterfragen, da mir der zugrundeliegene Geschäftsprozess auch gar nicht bekannt ist. Gewünscht ist soweit ich verstehe eben eine Lösung nicht mit mehreren Tools, sondern mit einem einzigen. Vielleicht hat ja auch jemand einen Tipp für ein Netzwerkanalysetool, das das einigermaßen hübsch kann. Idealerweise sollte dieses natürlich auch für mehrere Plattformen existieren. Meine Erfahrung mit derartigen Tools beschränkt sich auf die allg. verfügbaren Kommandozeilentools unter Linux. Sonst dürfte des Rätsels Lösung vmtl. die Erstellung einer eigenen Java-Applikation o. ä. sein, die das macht. Ist dann halt keine Browser-App mehr (Java-Plugin benutzt man ja nicht mehr). Naja, vielleicht sollte ich bevor der Thread hier noch ausartet auch einfach erst mal abwarten, bis ich mit den Leuten vor Ort gequatscht habe ;-).
  11. Also "überwachen" ist das falsche Wort. Kunde x hat irgendwelche Netzwerkprobleme, jetzt soll er unter Anleitung des Supports auf die Seite gehen, damit man idealerweise sehen kann, auf welcher Ebene das Problem liegt. Wenn aber jemand eine Idee hat, welche Third Party Software die o. g. Anforderungen erfüllt und evtl. noch irgendwie schön darstellen kann, wäre das natürlich auch eine Option, die ich dem AG gerne nahebringen werde :-). Achso, ping unter Anleitung ist keine Lösung bzw. von dieser Lösung will man wohl gerade wegkommen ;-). Sollte also schon etwas komfortabler sein. Wie die TCP/UDP Verbindungen derzeit getestet werden, weiß ich nicht. Evtl. mit telnet oder netcat ... Auf jeden Fall vmtl. mit irgendwelchen Kommandozeilentools. Und es sollte halt schon ein Tool sein, das "alles" was in den Anforderungen im 1. Post steht abdecken kann.
  12. Ok, dass das in dieser Form nicht mit einer Webanwendung im Browser möglich ist, war auch meine Einschätzung. Danke dafür.
  13. Also wenn ich von Client spreche, spreche ich grundsätzlich von der Seite, auf der die angedachte Browseranwendung ausgeführt wird. Das ist also der Rechner, auf dem das Javascript ausgeführt wird (zwar wird das natürlich auch erstmal vom Server geladen, aber eben dann lokal im Browser ausgeführt). Bei Server spreche ich grundsätzlich von der Gegenstelle für die Requests, die vom Client-Browser durchführt werden. TLDR: Client = Browser Server = Gegenstelle des Clients Den von dir nochmal beschriebenen Weg habe ich ja schon geprüft, das Problem ist eben, dass in die falsche Richtung analysiert wird (nämlich vom Server zum Client anstatt andersherum). Den Grund warum es in die andere Richtung gehen muss, hatte ich ja einige Posts über dir nochmal beschrieben: - die Verbindungen müssen vom Client zum Server aus aufgebaut werden, nicht anders herum. Es sollen Netzwerkprobleme analysiert werden, die vom Client zum Server hin auftreten Oder reden wir aneinander vorbei? Edit: Ich versuch's nochmal anders auszudrücken: Rechner A = Client Rechner B = Server Jetzt ist bspw. interessant, ob Rechner A eine Verbindung zu einem bestimmten Port von Rechner B herstellen kann. Die Gegenrichtung interessiert dabei nicht. Auch wenn man die Begrifflichkeiten Server/Client austauscht, ändert sich daran nichts. Auf Rechner B kann beliebige Software ausgeführt werden, auf Rechner A soll lediglich eine Browseranwendung (Javascript) laufen. (was, so vermute ich, nicht geht, wenn alle Anforderungen erfüllt werden sollen)
  14. Na, der Server ist eben die Gegenstelle für die Requests des Clients. Etwa lauscht er auf einem bestimmten Port auf TCP- oder UDP-Anfragen und gibt ein "Ok" zurück, wenn eine Verbindung aufgebaut wurde. Bzw. bei den ICMP-Requests antwortet er halt (gut, dafür muss man natürlich keinen Code selbst produzieren, nichtsdestotrotz ist es doch eine Server-Anwendung). Mit Javascript auf native Anwendungen zuzugreifen geht übrigens IIRC auch nicht (aus Sicherheitsgründen). Oder verstehst du die Anforderung anders? Es geht um Kunden (also die Clientseite), die Probleme haben, bestimmte Verbindungen zum ISP herzustellen. Und dann muss eben in Richtung Client -> Server analysiert werden, was das Problem sein könnte, nicht andersherum.
  15. Vielleicht nochmal zur Klarstellung die Eckpunkte auf die es denke ich ankommt: - der Client ist eine Blackbox, deren Konfiguration nicht geändert werden soll. Lediglich ein herkömmlicher Internetbrowser kann vorausgesetzt werden - die Verbindungen müssen vom Client zum Server aus aufgebaut werden, nicht anders herum. Es sollen Netzwerkprobleme analysiert werden, die vom Client zum Server hin auftreten Ich vermute, dass man da mit einer Browseranwendung nicht weiterkommt (außer mit den im 1. Post erwähnten Einschränkungen), sondern schon zu härteren Geschützen greifen muss, sprich, ein Binary zu produzieren, das auf dem Client dann halt ausgeführt werden muss. Aber vielleicht gibt's da ja auch was Fertiges ... Bin mir aber wie gesagt noch nicht zu 100% sicher, ob ich damit richtig liege. Evtl. geht's ja mit Flash? (0 Erfahrung) Aber Flash ist ja sowieso "out".
  16. Danke, das kannte ich noch nicht (bzw. schon mal was von gehört, aber nie näher angeschaut). 100% Javascript ist übrigens keine Bedingung. Sieht auf dem ersten Blick interessant aus, aber ich fürchte das wird auch nichts. Allenfalls könnte man es dafür verwenden, die Verbindungen in die andere Richtung aufzubauen (Vom Server zum Client), wenn man es auf dem Client installiert und den somit zum Server macht, was aber m. E. der falsche Weg ist, um das gewünschte Ergebnis (Netzwerkanalyse in die andere Richtung) zu erhalten. Außerdem wird der Client regelmäßig hinter einer Firewall sein. Aber da das nicht einfach im Browser läuft, scheidet es ohnehin schon von vorneweg aus.
  17. Erstmal danke für die Antworten. Naja, da kommt aber dann wie gesagt doch ein anderes Ergebnis raus, als wenn ich die Verbindungen vom Client aus aufbaue. Wie ich schrub, soll das ganze ja zur Analyse von Netzwerkproblemen auf Clientseite dienen, und es ist ja wohl ein Unterschied, ob Verbindungen ein- oder ausgehend fehlschlagen. Außerdem müsste dann auf dem Client bspw. ein Port geöffnet sein, zu dem man eine TCP/UDP Verbindung aufbauen kann, und das wird nicht der Fall sein. Die Clientkonfiguration ist nicht bekannt. Bei der MTU bin ich mir wie gesagt nicht sicher, ob da das selbe Ergebnis rauskommt, ob man sie von Client- oder Serverseite aus misst (aber ich vermute, auch dort gibt es einen Unterschied).
  18. Hallo zusammen. Kurz zu meiner Person: Ich habe vor kurzem eine Umschulung zum Fachinformatiker Anwendungsentwicklung abgeschlossen, habe aber schon früher einen Nebenjob in der Richtung gehabt. Jetzt fange ich in Kürze bei meinem neuen AG an zu arbeiten. Im Vorfeld habe ich schon eine E-Mail mit einem "Wunsch" bekommen, den ich zwar noch nicht umsetzen soll, aber ich (w|s)ollte mir darüber doch mal ein paar Gedanken machen. Und zwar soll eine Browseranwendung entstehen, die a: einen Ping zu einer bestimmten IP-Adresse durchführt (ich vermute, der soll per ICMP gemacht werden, genau ist die Anforderung aber nicht spezifiziert) und das Ergebnis darstellt b: die maximale MTU auf diesem Pfad bestimmt und darstellt c: eine TCP- oder UDP-Verbindung zu einer bestimmten IP durchführt und den Erfolg des Verbindungsaufbaus darstellt Gut, die serverseitige Programmierung dafür umzusetzen stelle ich mir noch einigermaßen machbar vor. Aber die Clientseite (Browseranwendung) macht mir einiges Kopfzerbrechen. Zum Thema Javascript: zu a: Einen ICMP-Ping kann Javascript soweit ich verstehe nicht. Als Workaround könnte man vmtl. einen HTTP-Request auf eine 0 Byte große Datei durchführen und dessen Zeit messen. Aber das entspricht dann natürlich nicht demselben Ergebnis, wie wenn der Benutzer einen Ping in der Eingabeaufforderung durchführt, insbesondere da das ja dann ein TCP-Request wäre (ICMP könnte ja auf Firewall-Ebene blockiert sein) und außerdem noch weitere Verzögerungen hinzukommen könnten ... Da das "Projekt" soweit ich verstehe zur Diagnose von Netzwerkfehlkonfigurationen dienen soll, wäre das vmtl. schon relevant. Insbesondere kommt denke ich ein Ping vom Server zum aufrufenden Client nicht in Frage, da der ja dann in der "falschen" Richtung passieren würde (unterschiedliche Firewall-Konfigurationen für in/outgoing usw.). zu b: da habe ich gar keine Idee, wie das mit JavaScript gehen soll, m. W. kann es soetwas "Netzwerknahes" wie "Bruteforcen" der maximalen MTU schlicht nicht (würde die Bestimmung der MTU von der Gegenseite, sprich, vom Server aus, evtl. zum selben Ergebnis führen? Ganz so fit bin ich in Netzwerkdingen dann auch nicht). zu c: für den Test der TCP-Verbindung könnte man wieder den Workaround aus a) (HTTP-Request) bemühen, aber UDP? Mit Javascript? Wohl eher nicht. Für die Parts die Javascript nicht kann: wie könnte man das denn überhaupt als Browseranwendung umsetzen? Mit einem Java-Applet (damit habe ich null Erfahrung)? Ist das überhaupt noch massentauglich? (auf wie vielen PCs ist denn das Java-Browser-Plugin noch installiert?) Hoffe, ihr könnt mir etwas "Erleuchtung" bringen, ob meine Überlegungen in die richtige Richtung gehen bzw. wie ihr die Sache angehen würdet. Mein erster Impuls wäre halt, meine Bedenken vorzubringen, dass da hinterher was "Brauchbares" bei rauskommt. Aber damit sollte ich dann halt nach Möglichkeit schon "richtig" liegen ;-). Und das will ich mit diesem Post "absichern" ;-). Vielen Dank im Voraus für eure Hilfe. zukzuk

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...