Zum Inhalt springen

speedi

Mitglieder
  • Gesamte Inhalte

    813
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von speedi

  1. Ich hab das vor einiger Zeit mal gemacht. Hab einfach einen eigenen Printstream als Out- und Error- Kanal gesetzt und alles was da drüber wollte eben dann in eine JTextArea geschrieben. OutputStream out = new OutputStream() { public void write(int arg0) throws IOException { addStatus((char)arg0); } }; System.setErr(new PrintStream(out)); System.setOut(new PrintStream(out)); public void addStatus(char c){ try { this.status.setText(this.status.getText()+c); this.scroller.getVerticalScrollBar().setValue( this.scroller.getVerticalScrollBar().getMaximum()); } catch (Exception e) {} } EDIT: this.status ist eine JTextArea this.scroller ist das JScrollPane auf welchem die JTextArea liegt.
  2. Seit der Version 10.4.0.80 reagiert iTunes nicht mehr auf die Multimedia-Tasten meiner Logitech-Wave Tastatur. Das Problem scheint keine all zu große Seltenheit zu sein, aber leider habe ich bislang vergeblich nach einer Lösung gesucht. Hat jemand das Problem auch bzw. hat jemand vielleicht sogar schon eine Lösung? System: Windows 7 (64), aktueller Patch-Stand iTunes: 10.4.0.80 Set-Point: 6.30.41 Keyboard-Treiber: 5.30.67 Ich hab derzeit keine Ahnung, was es ist. Liegt das Problem jetzt an Apple, MS oder Logitech? Gibts nen Workaround?
  3. speedi

    thread

    War dein Ziel nicht einen neuen Thread zu starten? Threads startet man mit mit "start()" nicht mit run. Wenn du das so machst wird überhaupt nichts parallelisiert - lediglich die "run()" deines "Threads" würde dann von dem Thread der sie eben aufruft runter gerattert.
  4. speedi

    Doctype bei JAXB

    Hallo Unicode. Nein, das hilft mir nicht. Die Dateien die ich einlesen muss zu verändern wäre keine gute Lösung. Es handelt sich um einen Standard den ich eben so implementieren muss wie er definiert ist. An der Dateiendung liegts nicht. Ich habe die Datei (ursprünglich "doctype_1.0.1.dtd") bereits umbenannt zu "1.0.1". Damit funktioniert es auch - sofern die Datei im gleichen Ordner liegt wie die XML-Dateien. Aber das ist eben nicht der Fall. Natürlich könnte man jetzt die Datei dann einfach automatisiert vor dem unmarshalling in den Ordner kopieren - würde funktionieren - aber eine schöne Lösung ist das wirklich nicht. Es muss doch wohl möglich sein, den Unmarshaller irgendwie zu sagen wo er die Doctype-Definition herziehen soll.
  5. speedi

    NTFS-Partition gekillt

    @habbeda: Das Programm ist spitze. Hab damit innerhalb von unter einer Minute die Daten wieder bekommen. Das einzige Manko: Alle Dateien und Ordner waren versteckt. Aber sowas kann man ja grad noch handeln.
  6. speedi

    Doctype bei JAXB

    Hi Leute, ich habe die Aufgabe einen XML-Reader zu schreiben um Daten in einem bestimmten Format einzulesen. Ich habe aus einer XML-Schema-Definition mit JAXB die Klassenstruktur erzeugt und möchte nun die Daten einlesen. Das Problem: In der XML die ich einlesen möchte gibt es eine Zeile: <!DOCTYPE READER SYSTEM "1.0.1"> Nun bekomme ich eine Fehlermeldung dass die Datei "1.0.1" (DTD-Datei) im Ordner in dem die XML selbst auch liegt nicht vorhanden ist. Ich habe die Datei. Allerdings kann ich sie ja schlecht immer erst in den Ordner kopieren aus dem ich die XML laden will. Weiß jemand wie man dem JAXB sagt, dass er die Doctype-Definition von woanders laden soll? Nochmal die Fehlermeldung: javax.xml.bind.UnmarshalException - with linked exception: [java.io.FileNotFoundException: C:\Users\Username\workspace\XMLConnector\testfiles\1.0.1 (Das System kann die angegebene Datei nicht finden)] at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:202) at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:173) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:142) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:151) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:169) at Test.main(Test.java:14) Caused by: java.io.FileNotFoundException: C:\Users\Username\workspace\XMLConnector\testfiles\1.1.2 (Das System kann die angegebene Datei nicht finden) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(FileInputStream.java:120) at java.io.FileInputStream.<init>(FileInputStream.java:79) at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70) at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161) at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:653) at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1315) at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282) at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:283) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1194) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1090) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1003) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:200) ... 6 more
  7. speedi

    NTFS-Partition gekillt

    Danke Probier ich heute gleich noch aus. Was den Threadtitel angeht: Jup... selten dämlich. Sorry, bin heute bissl neben der Spur - teilweise wichtigste Daten sind weg - habs geändert.
  8. Hi Leute, meine Freundin hats gestern geschafft einen E-Mail-Anhang zu öffnen:upps und mir dann damit das System zu killen (welch wunder - ein Virus!). Das war eigentlich nicht weiter tragisch. Alle wichtigen Daten liegen bei mir eh auf anderen Partitionen. Ich hab dann einfach Windows (XP) neu aufgespielt und dabei ists passiert: Ich habe da wo man die Installations-Partition auswählt die falsche Platte erwischt. In meinem PC hatte ich noch einige Daten auf einer 80er Platte mit einer einzigen NTFS-Partition. Diese Partition habe ich im Windows-Setup gelöscht. Formatiert wurde sie nicht, aber ich schätz mal die Partitionstabelle ist über den Jordan gewadert. Hat irgendwer eine Ahnung ob/wie ich die Daten vielleicht noch Retten kann? "PC Inspector File Recovery findet zwar auf der Platte zwei:confused: Partitionen aber keine einzige Datei. Optimal wäre ein Freeware oder Open-Source Programm oder irgend eine zeitlich limitierte Demo-Version - hab eigentlich wenig lust für die einmalige Verwendung übermäßig was hin zu blättern und am Ende festzustellen es hilft nichts. Gruß Daniel
  9. Hi Leute, ich hab das Problem gelöst. Nochmal zur Problemstellung: Ich hatte eine Medion-Recovery-CD (eigentlich normale OEM-XP-Installations-CD welche durch Medion scheinbar minimal angepasst wurde - so wird z.B. der Key bei der Installation schon automatisch eingetragen). Das Gehäuse war noch das vom Aldi-PC, aber das war dann eben auch schon alles. Zur Problemlösung: Der Verweis von Microsoft auf die genuine-Seite war doch nicht ganz verkehrt. Da gibt ein nettes Tool welches das Problem gelöst hat: Aktualisieren des Windows-Product Keys - Microsoft Windows Hab einfach mit dem Tool den Product-Key "aktualisiert" - was auch immer das heißen mag. Im Windows ist nämlich immernoch der gleiche Key eingetragen welcher es vorher auch war. @disarstar Die Sache mit diesen Used-Soft-Anbietern ist mir etwas suspekt. Hab keine Lust am Ende nur eine so schön gecrackte CD zu bekommen das ich keine Probleme mehr hab aber am Ende trotzdem nicht legal bin. Da nerv ich lieber ein weilchen die Leute von der Hotline - zumal ich ja bereits eine Lizenz habe und diese auch gern weiterhin nutzen würde anstatt mich der maximalen Kundengängelung irgendeiner Firma zu beugen. In Europa ist es meines Wissens nach für MS nicht legal Lizenzen an bestimmte Hardware zu binden. Genau so wie sie die OEM-Lizenzen auch einzeln verkaufen müssen. Gott... was bin ich froh auf dieser Seite des Atlantiks zu leben.
  10. Danke. Ich werds heut nochmal auf der technischen Hotline und der Aktivierungshotline versuchen. Selbstverständlich sage ich einem Hotlinemitarbeiter nicht direkt, dass ich ihn für einen Hornochsen halte sondern bin ganz freundlich. Ich bin nur langsam echt sauer deswegen. Vielleicht war die Mitarbeiterin die ich dran hatte auch echt einfach ein Sonderfall.
  11. Hi Leute, eine Freundin von mir hat vor einen halben Jahr ihren 5 Jahre alten Aldi PC beedrigt (HW-defekt). Um das Problem zu lösen wurden die gesamte Hardware getauscht (alte HW von überall zamgesucht). Danach wurde Windows (alte OEM-Lizenz - XP Home - vom Aldi-PC - von dem ja immerhin noch das Gehäuse stammt) neu installiert und aktiviert => kein Problem. Mittlerweile geht der PC wieder nicht mehr so richtig, da Windows damals von einem Freund auf einer uralt 40 GB-Platte installiert wurde (0 Performace, Programme brauchen ewig zum starten) und wenig Fachwissen installiert wurde. Deshalb habe ich jetzt eine 250GB Platte besort und wollte den PC sozusagen neu aufsetzten. Problem: Microsoft verweigert die Aktivierung. Ich habs jetzt auch schon übers Telefon versucht und dem Mitarbeiter versucht zu erklären, dass das Problem wegen einer Hardwareänderung besteht und es sich dabei nicht um einen Lizenzverstoß handelt, aber die hören gar nicht richtig zu - bzw. verstehen das Problem nicht. Stattdessen fordern sie mich auf den Aktivierungsschlüssel anzusagen um mir dann mitzuteilen, dass sie dieses Produkt nicht aktivieren können und ich auf Genuine Microsoft Software einen neuen Key erwerben soll. Auf der Genuine-Seite finde ich extrem viel zum Thema "Vorteile von Originalsoftware" und "Produkte kaufen" aber nichts zum Thema: "Hilfe, die Hornochsen aus Redmond verweigern mir bereits gekaufte Produkte zu verwenden". Hat jemand eine Ahnung wo ich anrufen kann um das zu erklären? Die Aktivierungshotline scheint ja nicht die richtige Adresse zu sein.
  12. Cool. Na dann hat sichs ja erledigt.
  13. Ok. Damit sind die privaten Messages schonmal raus. Aber wie schon gesagt: Wenn der Chat auch übers Internet funktionieren soll oder anderweitige Netzübergreifend bietet sich UDP (MulticastSocket oder DatagramSocket weniger an, da dann Broadcast/Multicast am Router hängen bleibt und für Unicast sämtliche Router hinten denen die Clients sitzen entsprechend konfiguriert sein müssten). Simple lokale Variante: Wenn das Ding nur im LAN funktionieren soll dann schmeiß dein ServerSocket und Socket zeugs weg und nimm wie flashpixx vorschlägt einen MulticastSocket. Der zentale Server fällt dann komplett weg und die Clients melden sich lediglich an die MulticastGroup an um Nachrichten zu empfangen. Und senden Packete an die MulticastGroup. TCP-Variante: Dein jetziger Code ist ganz ok aber wie ich schon sagte: Dein Server sendet die Nachricht nur an den Sender der Nachricht. Du musst da bissl modifizieren: Lager deinen Server-Kern in eine Klasse und verpasse dieser Klasse eine Liste in der du die Verbindungen speicherst: import java.io.*; import java.net.*; import java.util.LinkedList; public class ServerTest { private LinkedList<SocketHandler> receivedSockets = new LinkedList<SocketHandler>(); public ServerTest() throws IOException { ServerSocket serverSocket = serverSocket = new ServerSocket(4444); Socket clientSocket = null; for (int i = 1;; i++) { try { clientSocket = serverSocket.accept(); System.out.println("Client eingetroffen"); SocketHandler sh = new SocketHandler(this, clientSocket, i); sh.start(); clientSocket = null; } catch (IOException e) { System.err.println("Accept failed: 4444"); System.exit(-1); } } } public void sendMessage(String message) { for (SocketHandler handler : receivedSockets) { handler.sendMessage(message); } } public static void main(String[] args) { try { new ServerTest(); System.out.println("Server gestartet"); } catch (IOException e) { System.err.println("Das ist nicht möglich!"); System.exit(-1); } } } 2. pass deinen SocketHandler darauf an: import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class SocketHandler extends Thread { private Socket socket; private int ID; private ServerTest serverTest; private PrintWriter ausgabe; public SocketHandler(ServerTest serverTest, Socket clientSocket, int i) { socket = clientSocket; ID = i; this.serverTest = serverTest; } public void run() { try { ausgabe = new PrintWriter(socket.getOutputStream(), true); BufferedReader eingabe = new BufferedReader(new InputStreamReader( socket.getInputStream())); ausgabe.println("Der Server hat dich als Nummer" + ID + " verbunden"); System.out.println("Der Server hat sich mit Nummer" + ID + " verbunden"); String inputLine; while ((inputLine = eingabe.readLine()) != null) { System.out.println("User" + ID + inputLine); if (inputLine.equals("Bye")) { break; } Scanner scan = new Scanner(System.in); String antwort = scan.nextLine(); serverTest.sendMessage(inputLine); } ausgabe.println("Der Server trennt die Verbindung mit dir"); System.out.println("Der Server trennt die Verbingung mit Nummer" + ID); ausgabe.close(); eingabe.close(); socket.close(); } catch (Exception e) { } } public void sendMessage(String message){ ausgabe.println(message); } } WICHTIG: - Das ist nur eine Demo wie man ganz prinzipiell dafür sorgen kann, dass Messages an alle verteilt werden. - Da der code deiner Scanner-Klasse nicht vorliegt weiß ich nicht ob ich das jetzt so richtig implementiert hab. Jedenfalls bekommen jetzt alle genau das was vorher der Sender der Nachricht vom Server bekommen hat. - Meine sendMessage-Routine fängt keine IOException ab. Das sollte man aber tun. Überleg dir was sonst passiert, wenn der erste Client in der Liste mittlerweile offline ist. - Wenn ein Client offline geht (IOException oder eingabe.readLine() = null) sollte ihn der Server aus der Liste nehmen.
  14. Kanns sein, dass du versuchst im selben Thread zu empfangen und zu senden? Empfangen geht prinzipiell so: int port = 19245; byte [] buf = new byte[256*256]; MulticastSocket socket = new MulticastSocket(port); socket.joinGroup(InetAddress.getByName(232.8.8.8)); DatagramPacket p = new DatagramPacket(buf,buf.length); socket.receive(p);
  15. Informier dich doch erstmal über die zugrunde liegenden Protokolle! TCP stellt - wie ich schon sagte - so etwas wie eine Punkt- zu Punkt- Verbindung. Das kannst du vergleichen mit einem Wasserrohr. Was du auf der einen Seite reinkippst kommt auf der anderen raus. Wenn du dein Wasser an mehreren Stellen haben willst brauchst du eine Art Verteiler. Soll dein TCP-Server aus dem Internet oder WAN erreichbar sein musst du entsprechend eine Port-Weiterleitung am Router konfigurieren. Java-Klassen: Socket, ServerSocket UDP kannst du vergleichen mit einer besseren SMS. Du kannst UDP gezielt an jemanden schicken oder aber an eine bestimmte Gruppe oder an bestimmte Netze. Einen Unicast schickst du an eine besimmte eindeutige IP-Adresse oder PC-Namen. Einen Multicast empfängt jeder der sich eine bestimmte Multicast-Gruppe anmeldet. Und einen Broadcast empfängt jeder dessen IP in einem bestimmten Adressbereich liegt (kannst auch an absolut alle Broadcasten). Der Nachteil von UDP: Übers Internet wirst du Probleme bekommen. Am Router endet dein Broadcast und dein Multicast. Selbst ein Unicast geht nur übers Internet wenn du am Router entsprechende Port-Weiterleitungen konfiguriert hast. Bei UDP ist die Datenübertragung nicht gesichert. Pakete können sowohl verloren gehen als auch beschädigt werden. Ich weiß nicht welche Anforderungen du an deinen Chat hast, aber generell finde ich dafür TCP besser. Abgesehen davon verlierst du mit UDP die Privatsphäre. Stell dir vor du möchtest später noch eine "flüstern"-Funktion einbauen um irgendwas an genau einen Empfänger zu schreiben. Du kannst dann natürlich dein Protokoll so stricken, dass du den Empfänger in der Nachricht vermerkst und die anderen die Nachricht wieder verwerfen, aber wenn jemand einen anderen Client verwendet hast du keine Kontrolle mehr. Broadcast und Multicast setze ich persönlich nur ein um die Lasten zu reduzieren (Video-Broadcast/Multicast), um Konfigurationseinstellungen zu finden oder um ewigen C-Programmieren das Leben nicht noch mit zu TCP zu belasten.
  16. speedi

    Terminkalender

    Ohne dir zu nahe treten zu wollen: Ich werd dein Programm nicht ausführen. 1. Ich kenn dich nicht. 2. Es gibt keinen Grund dir zu vertrauen (hängt stark zusammen mit 1.). 3. Du zeigst den Source nicht. Schade... mich hätts schon interessiert. Aber ich hab keine Lust das am ende irgendein File-Walker über meine Festplatte wuselt und weiß weiß ich macht.
  17. Du musst - wie flashpix schon sagste - schauen, dass die Nachricht vom Server im den OutputStream eines jeden Sockets geschrieben wird. D.h. du musst dir deine einfach zentral eine Liste anlegen in der du sämtliche Sockets - oder gleich die ganzen ClientHandler reinschmeißt. Wenn dann eine Nachricht über den Server geht gehst du die Sockets in der Liste durch und schickst die Nachricht an jeden. TCP-Sockets kannst du als Punkt- zu Punkt- Verbindung von einem Ort zum anderen betrachten. Wenn du über einen Socket sendest empfängt das auch genau einer. Wenn es alle bekommen sollen musst du über jeden Socket auch was senden.
  18. 1. Es würde so funktionieren. 2. Klar gibts fälle wo man nicht einfach von Gleitkommazahl auf Ganzzahl casten kann, aber das hat für seine Problemstellung eigentlich keine Relevanz. 3. "Völlig" falsch? Nicht 100% sauber triffts eher. 4. Modulo wäre auch eine Lösung. Hab ich nicht dran gedacht wo ich das geschrieben hab. 5. Ich hatte nicht den Eindruck, dass der Thread-Ersteller über ein breites Basiswissen verfügt, also verzeih mir Aussagen wie "Alle Nachkommastellen werden abgeschnitten".
  19. Zu 1. Du sollst ein Programm schreiben welches von 1 bis zu einem bestimmten Eingabewert alle zahlen ausgibt und deren Summe berechnet. Also was braucht man dafür? Das Programm soll ganz primär in einer bestimmten Schreitweite (nämlich 1) hochzählen. Also würde sich eine Zählerschleife (for-Schleife) anbieten. Desweiteren brauchst du eine Summenvariable welche die natürlichen Zahlen aufsummieren kann (da würde sich eine Variable vom Typ Integer oder Long anbieten) in der Schleife musst du dann immer den aktuellen Zählerstand auf die Summe draufschlagen und den aktuellen Zähler ausgeben. Wenn die Schleife zu Ende ist gibst du dann einfach noch die Gesamtsumme aus und das wars. Zu 2. Auch hier bietet sich wieder eine for-Schleife an. Als mögliche Teiler kommen potentiell alle Zahlen in Frage die kleiner oder gleich der Hälfte der zu teilenden Zahl sind. Also zählt deine Schleife genau von 1 bis zur hälfte. In der Schleife teilst du dann einfach z durch den aktuellen Zählerstand. Als Datentyp solltest du dafür double oder float hernehmen denn diese sind in der Lage Kommazahlen zu verarbeiten. Um zu prüfen ob der Zähler ein möglicher Teiler ist vergleichst (if-Abfrage) du das Ergebnis mit sich selbst nur das du das Ergebnis auf einer Seite der Abfrage auf Integer oder Long castets (alle Nachkommastellen werden abgeschnitten). Wenn also z.B. als Ergebnis 13.23453 rauskam vergleicht dann deine if-Abfrage diesen Wert mit 13 und stellt fest: passt nicht. Wenn 2.0 rauskommt vergleicht deine if-Abfrage 2.0 mit 2 und stellt fest: passt. Deine Aufgabe jetzt: Schau dir die Elemente an welche es in Struktogrammen gibt und stell den Programmablauf in einem Struktogramm dar. Programmieren ist im Grunde nichts anderes als einer dummen Maschine schritt für schritt zu sagen, was sie tun soll also geh Schritt für Schritt den logischen Ablauf durch. Wenn du ein korrektes Struktogramm erarbeitet hast ergibt sich der Java-Code daraus nahezu von selbst. Wie du Java-Programme überhaupt erstellst ist ansonsten klar oder? Also JDK, Entwicklungsumgebung etc?
  20. Das Projekt soll in Java programmiert sein und als Entwicklungsumgebung sollst du BlueJ verwenden. BlueJ ist weder eine Programmiersprache noch ein Compiler sondern lediglich ein Editor und Verwaltungstool für Java-SourceCode - vielleicht hier und da noch etwas mehr aber im Grunde genau das. Und wenn du allgemeine Java-Fragen auch als soche formulierst schreckst du die Leute weniger ab. Bei BlueJ-Fragen denk ich mir immer: ist bestimmt wieder was total triviales von irgendwen der den unterschied zwischen Sprache und IDE nicht versteht. P.S. Viel erfolg bei der Lösung. Interessante Sache die du da vor hast.
  21. Erstmal paar Grundlegende Sachen: Mit BlueJ kann man sowas nicht machen. Mit Eclipse aber auch nicht. Ich glaub VisualStudio hat das ebenso nicht drauf. Wieso? Weil das alles Entwicklungsumgebungen sind und keine Programmiersprachen!! Mit Java geht sowas. Mit C# auch. Von daher bezieh dich bitte in Zukunft nicht auf BlueJ es sei denn die Frage dreht sich wirklich direkt um BlueJ. Wobei dir die echten Fachleute hier wahrscheinlich eh nicht wirklich so einfach helfen können, weil die üblicherweise keine Einsteiger/Pädagogische IDEs verwenden. Zu deinem Problem an sich: Den Code der Website könntest du ein URL-Objekt erstellst und dir von dem die Connection holst (openConnection()). Mit über den InputStream kannst du dich dann durch den HTML-Code hangeln und die Stelle suchen an der der entsprechende Wert zu finden ist.
  22. Ich finde deine Frage etwas unklar Formulier aber ich versuchs trotzdem mal zu beantworten. Ich schätze mal mit "Standardbibliotheken" meinst du sämtliche Bibliotheken die bei Java eben schon so mit dabei sind. Wenn du das JDK installiert hast gibts normalerweise (wenn es mit installiert wurde) im JDK-Ordner eine Datei src.zip. Darin befindet sich so ziemlich der gesamte Quellcode der Standardbibliotheken. Was zusätzliche Bibliotheken angeht: Die kannst du selbstverständlich runterladen. Aber ein zentrales, offizielles Archiv gibts dafür nicht. Oracle/Sun selbst bietet einiges an zusätzlichen Libs (z.B. Java 3D). Aber auch zig andere bieten gute und nützliche Bibliotheken. Google hilft wenn du was konkretes suchst. Man findet Java-Libs eigentlich für alles mögliche.
  23. Das wollt ich dir auch grade sagen. Es kann allerdings sein, dass es stark von der Platform und der Runtime abhängt ob das funktioniert oder nicht. Man kann den Pfad einfach im File-Objekt angeben und das dann an nen FileReader oder FileInputStream übergeben. Oder was auch immer. Eigentlich müsste es auch über die Klasse URL und deren Connection gehen, wenn du vor den Pfad "smb://" (also das Protokoll) angibst.
  24. speedi

    Pfad für eine Textdatei

    Mehr als die Vorposter kann ich zu dem Thema nicht sagen, aber wieso legst du eine Textdatei im src-Ordner ab? Leg dir doch einen "properties", "config" oder irgendwas-Ordner an.
  25. speedi

    Routinen

    Ist so eine Software nach dem deutschen Recht überhaupt legal, oder fällt das schon unter die verbotenen Hacker-Tools? Zuerst müsste man mal rausfinden wer überhaupt so alles da ist. Kann man irgendwie einen UDP-Broadcast schicken auf den normalerweise jeder Rechner im Netz antwortet? Wenn man dann so eine Liste mit IP-Adressen oder Host-Namen hat könnte man erstmal mit nem simplen TCP-Socket sich versuchen an die "üblichen verdächtigen" Ports zu hängen. Wenn der Socket connectedm, ist da auf jeden Fall mal irgendwas. Dann könnte man schauen, ob man darauf eine Datenbankverbindung über die einen der verbreiteteren JDBC-Connectoren bekommt. Wenn die Verbindung klappt und der Server nur irgenwas von wegen Zugriffsrechte meckert dann ist da ein Datenbankserver und du weißt auch automatisch was für einer (der auf den der Connector halt passt). Wenn du damit fertig bist, kannst die Hosts nochmal auf die gute alte Brute-Force-Methode checken. Du checkst einfach alle Ports von 0 bis 65536 bei jeden Rechner. Aber da das etwas dauern würde, würde ich zuersrt die üblichen verdächtigen checken. Das du alle Datenbanken findest ist so gut wie ausgeschlossen, es gibt einfach zu viele um alles mögliche zu prüfen. Du kannst ja deinen Lehrer nochmal Fragen ob er wirklich alle die SQL-Datenbanken im Netz gemeint hat und wenn ja, ob es reicht, wenn du nur bestimmte auf bestimmten ports erkennst. Ich find die Aufgabe irgendwie sehr sinnlos, aber irgendwie auch witzig.

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...