ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
689
689
EMPFEHLEN
-
Servus

Hab hier eine Aufgabe wo ich ned weiterkomm.
Und zwar lautet sie:
Folgende Socket-Anwendung (Client+Server) soll das können:
- Server-Prog. läuft nach dem Start kontinuierlich,d.h. kann mehrere Aufgaben nacheinander behandeln.
- Vom Client aus können Sie den Befehl „Sende <Dateiname> <Dateiinhalt>“ abschicken.
- Der Client sucht in seinem lokalen Verzeichnis und liefert den Inhalt der Datei –falls vorhanden - an den Server.
- Der Server empfängt den <Dateiinhalt> und speichert den Inhalt unter <Dateiname> in seinem lokalen Verzeichnis
- Vom Client aus können Sie den Befehl „Hole <Dateiname>“ abschicken. Der Server sucht in seinem lokalen Verzeichnis und liefert den Inhalt der Datei –falls vorhanden - an den Client zurück
- Der Inhalt der Datei wird auf der Konsole des Clients ausgegeben
- Vom Client aus können Sie den Befehl „Schliesse“ absetzen. Dieser Befehl bewirkt serverseitig, dass sich das Server-Programm beendet.
Folgende Programme existieren:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
[B]EchoClient.java[/B] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; public class EchoClient { public static void main (String []args) throws UnknownHostException, IOException { // verbinde mit dem rechner unter der ip adresse // 127.0.0.1 auf dem port 1565 Socket socket=new Socket("127.0.0.1",1565); // erzeuge kommunikationsendpunkt um daten zu schicken PrintWriter printW=new PrintWriter(socket.getOutputStream()); printW.println("Hallo in Kleiner Schrift\n\r"); printW.flush(); //erzeuge kommunikationsendpunkt um daten zu lesen BufferedReader bufRead=new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println("Ausgabe vom Server war"+bufRead.readLine()); } }
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
EchoSocketServer.java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class EchoSocketServer { public static void main(String[] args) throws IOException { // Der dienst wird auf dem port 1565 gestartet ServerSocket server=new ServerSocket(1565); // warte solange bis ein client eine verbindung herstellt Socket socket=server.accept(); //erzeuge kommunkationsendpunkt um daten zulesen BufferedReader bufRead=new BufferedReader(new InputStreamReader(socket.getInputStream())); //eingehende zeile wird eingelesne String input=bufRead.readLine(); //...und auf der kommandozeile ausgegeben System.out.println(input); //string wird in klein-buchstaben umgewandelt input=input.toLowerCase(); // kommunkationsendpunkt zum schreiben von daten an den client wird erstellt PrintWriter printW=new PrintWriter(socket.getOutputStream()); //daten werden an den client geschickt printW.println(input); printW.flush(); } }
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
ReadFromFile.java import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class ReadFromFile { public static void main(String[] args) { ReadFromFile rff=new ReadFromFile(); rff.readFile(); } public void readFile() { // es wir das die Klasse File benutzt um eine Datei input.txt zu referenzieren. File file = new File ("input.txt"); // Die Klasse Scanner emöglich es uns einfach mit einem File Objekt zu arbeiten und dessen Inhalt einzulesen Scanner scanner = null; try { // hier verbinde ich die Objekte der Klasse Scanner und File scanner = new Scanner (file); } catch (FileNotFoundException e) { System.out.println ("File not found!"); System.exit (0); } // solange die methode hasNext im Scanner weitere Zeilen feststellt while(scanner.hasNext()) { // es wird eine zeile ausgelesen aus der datei und in der variable tmp gespeichert String tmp=scanner.nextLine(); // die gerade eingelesene Zeile wird auf der Kommandozeile ausgegeben System.out.println(tmp); } } }
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
ReadFromConsole.java import java.util.Scanner; public class ReadFromConsole { public static void main(String[] args) { ReadFromConsole rfc = new ReadFromConsole(); rfc.readIn(); } public void readIn() { System.out.println("Wir möchten die Werte von Personen ueber die Konsole einlesen."); Scanner scanner = new Scanner(System.in); while (true) { String tmpName = ""; String tmpVorname = ""; String tmpWeiter = ""; System.out.println("Bitte geben Sie zuerst den Namen ein:"); tmpName = scanner.next(); System.out.println("Bitte geben Sie danach den Vornamen ein:"); tmpVorname = scanner.next(); System.out.println("Die Daten der eingegebenen Person:"+tmpName+" "+tmpVorname); System.out .println("Moechten Sie fortfahren mit der Eingabe (ja/nein):"); tmpWeiter = scanner.next(); if (tmpWeiter.equals("nein")) { System.out.println("Programm wird beendet"); System.exit(1); return; } } } }
-
21.11.11 15:50 #2
- Registriert seit
- Jun 2007
- Ort
- Passau (Niederbayern)
- Beiträge
- 1.394
Hi,
wo kommst du jetzt nicht weiter, bzw. was ist dein genaues Problem?
Gruß
BKÜber eine gute Bewertung freut sich jeder ;)
Bitte erledigte Threads als "Erledigt" markieren.
"Though a program be but three lines long, someday it will have to be maintained.''
-- Geoffrey James, "The Tao of Programming"
-
...screcno ciao,
Die gezeigten Programme sind also zurzeit unabhängig von der Aufgabe; um zu zeigen, wie die Sachen funktionieren?
Und was HTML-mäßiges ist deinen Quelltexten eigentlich passiert? "?
(Liegt nicht an den Codetags, die funktionieren).
edit: 5 Minuten? Hmmm...Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
servus,
also das sind beispiele mit denen wir arbeiten sollen.. bzw. verknüpfen plus die fehlenden funktionen mitprogrammieren! ich weiss nicht wie ich anfangen soll
edit: sorry die html codes kamen durch den texteditor! sorrrry
-
Also,
Client:
Zuerst mal ein Programm, das in einer Schleife immer wieder Zeile von der Konsole einliest.
Wenn der Stringanfang Sende ist, nimmst du den Rest des Strings als Dateinamen.
Öffne einen Socket und die Datei zum Namen.
Schick die Zeichenanzahl des Namens über den Socket.
Schick den Namen als Einbytezeichensatz (Iso8859-1 zB.) über den Socket.
Shcick, wieviel Byte die Datei hat.
Lies die Datei ein und schick sie auch über den Socket.
Schließe Datei und Socket.
Wenn der Stringanfang aber Hole war:
Socket öffnen.
Länge vom Dateinamen und Name senden.
Zahl empfangen, die eine Byteanzahl angibt.
So viel Byte empfangen und in eine neue Datei schreiben.
Socket und Datei schließen.Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Muss ich nicht dem Server eine while-Schleife hinzufügen****?
"Wenn der Stringanfang Sende ist, nimmst du den Rest des Strings als Dateinamen."
wie sieht sowas denn aus****
-
Warum machst du nicht zuerst mal den Client, statt Server?
Zum String:
Die Stringklasse hat alle Methoden, die du dafür brauchst..
warum schaust du nicht einfach einmal nach?
Mit indexOf suchst du das erste Leerzeichen (oder den ersten Tabulator).
Mit substring bekommst dan einereits den Teil vor der gefundenen Stelle
(zum Prüfen auf "Sende" etc.), andererseits den anderen Stringteil (=Dateiname).
Und bitte schick nicht dauernd PNs.
Ich seh deine neuen Beiträge auch so.
Bin eben auch nicht immer online,,,Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
01.12.11 19:24 #8
Als Freund von Strukturierung würde ich erstmal damit anfangen, eine definierte Schnittstelle zu bilden, da auf Client- und Server-Seite jeweils Dateien gelesen bzw. geschrieben werden sollen. Auch wäre es sinnvoll, die Operationen als enum zu definieren. Nebenbei ist auf beiden Seiten jeweils vom Stream zu lesen und in den Stream zu schreiben. Deployen würde ich dann einen "Shared"-Teil (= die gemeinsam verwendeten Dateien) auf Client und Server und dann je nachdem den Client- und den Server-Teil.
Danach ist es jetzt relativ easy, die einzelnen Teile nacheinander zu implementieren und die Implementierungen erstmal ohne die Sockets zu testen, das macht das Ganze einfacher.CU schnuffie
Fragliche Fragen stellende Fragensteller sind für verantwortungslose Antworten antwortender verantwortlicher Antworter selbst verantwortlich.
Ähnliche Themen
-
socket client- server windows<->linux
Von hphi im Forum C/C++Antworten: 1Letzter Beitrag: 22.11.07, 13:53 -
Server Socket und Client Socket
Von spiderman21 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 2Letzter Beitrag: 23.10.07, 17:00 -
Server Socket und Client Socket
Von spiderman21 im Forum NetzwerkeAntworten: 1Letzter Beitrag: 22.10.07, 01:48 -
Socket Server / Client problem
Von PrinzMartin im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 6Letzter Beitrag: 23.08.07, 16:53 -
Debian Pakete für Java Client Prog
Von Mindwinder im Forum JavaAntworten: 0Letzter Beitrag: 19.11.06, 16:20





Zitieren


Login





