Hi, bin neu hier, also falls das Thema schon existiert oder die Formatierung bescheiden ist oder sonst was, bitte habt Gnade.. 
Ich habe eine Aufgabe zu erledigen und komme momentan leider nicht weiter. Wir sollen ein Programm schreiben, indem ein Client über die Run Arguments (wir programmieren mit Eclipse) eine Rechenaufgabe der Art MUL 2 5 an den Server übergibt, dieser sie dann ausrechnet, in der Konsole ausgibt, in eine Datei speichert und dann das Ergebnis an den Client zurückgibt. Erstmal keine Sorge, ich will natürlich nicht ne komplette Lösung haben, habe schon Ideen, aber hänge gerade an einer Kleinigkeit, bei der ich nicht weiterkomme und vorher auch nicht weitermachen kann.
Mein Problem ist das übergeben der Run args an den Server. Wir hatten ein Testprogramm geschrieben, dass auch wunderbar funktioniert, in dem einfach nur ein String übergeben wird:
Client Code:
Server Code:
Ausgabe auf Serverseite ist: Eingabe des Clients war: TEST
Ausgabe auf Clientseite ist: Antwort war: test
Nun möchte, bzw. darf ich aber eben nicht den String "TEST" übergeben, sondern Konsolenparamter (Run args), wie MUL 1 2 und nun kommt mein Problem:
Folgendes habe ich bislang ausprobiert (bzw. eigentlich schon ziemlich viel und auch ziemlich viel gegoogelt, sowie hier die Forensuche benutzt, aber ich finde einfach nichts :/ ):
Client:
Server:
So bekomme ich nun immerhin schon mal die Ausgabe: Eingabe war MUL, bzw Antwort war MUL. Aber der Rest dahinter kommt nicht an. Lasse ich clientseitig die for schleife weg und versuche mir mit pw.println(input) die Run args ausgeben zu lassen, so wie ich es bis jetzt kennengelernt habe, bekomme ich folgende Ausgabe: Eingabe des Clients war/Antwort war: [Ljava.lang.String;@119db21f.
Hat jemand ne Idee, wie ich den run Arg Array sauber zum Server und wieder zurück bekomme?
Vielen Dank im Voraus und viele Grüße
Ich habe eine Aufgabe zu erledigen und komme momentan leider nicht weiter. Wir sollen ein Programm schreiben, indem ein Client über die Run Arguments (wir programmieren mit Eclipse) eine Rechenaufgabe der Art MUL 2 5 an den Server übergibt, dieser sie dann ausrechnet, in der Konsole ausgibt, in eine Datei speichert und dann das Ergebnis an den Client zurückgibt. Erstmal keine Sorge, ich will natürlich nicht ne komplette Lösung haben, habe schon Ideen, aber hänge gerade an einer Kleinigkeit, bei der ich nicht weiterkomme und vorher auch nicht weitermachen kann.
Mein Problem ist das übergeben der Run args an den Server. Wir hatten ein Testprogramm geschrieben, dass auch wunderbar funktioniert, in dem einfach nur ein String übergeben wird:
Client Code:
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class HojaClientSocket {
public static void main(String[] input){
try {
Socket s=new Socket("127.0.0.1", 4711);
OutputStream os=s.getOutputStream(); //senden an Server
PrintWriter pw=new PrintWriter(os);
pw.println("TEST");
pw.flush(); //anstatt von pw.close();
InputStream is=s.getInputStream(); //zurückgegebener String von Server einlesen
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String antwortVomServer=br.readLine();
System.out.println("Antwort war: "+antwortVomServer);
pw.close(); //Socket schließen
s.close(); //Socket schließen
//}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Server Code:
Java:
package MessPack;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class HojaServerSocket {
public static void main(String[] input) {
try {
ServerSocket so=new ServerSocket(4711);
Socket s=so.accept(); //Server wartet auf Clientverbindungsanfrage, bzw. akzeptiert sie.
InputStream is=s.getInputStream(); //String von Client bekommen
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String tmp=br.readLine();
String erg=tmp.toLowerCase();
OutputStream os=s.getOutputStream(); //String senden an Client
PrintWriter pw=new PrintWriter(os);
pw.println(erg);
pw.close();
s.close();
System.out.println("Eingabe des Clients war: "+tmp);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Ausgabe auf Serverseite ist: Eingabe des Clients war: TEST
Ausgabe auf Clientseite ist: Antwort war: test
Nun möchte, bzw. darf ich aber eben nicht den String "TEST" übergeben, sondern Konsolenparamter (Run args), wie MUL 1 2 und nun kommt mein Problem:
Folgendes habe ich bislang ausprobiert (bzw. eigentlich schon ziemlich viel und auch ziemlich viel gegoogelt, sowie hier die Forensuche benutzt, aber ich finde einfach nichts :/ ):
Client:
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class HojaClientSocket {
public static void main(String[] input){
try {
Socket s=new Socket("127.0.0.1", 4711);
OutputStream os=s.getOutputStream(); //senden an Server
PrintWriter pw=new PrintWriter(os);
for(int i=0; i<input.length; i++){
pw.println(input[i]);
}
pw.flush(); //anstatt von pw.close();
InputStream is=s.getInputStream(); //zurückgegebener String von Server einlesen
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String antwortVomServer=br.readLine();
System.out.println("Antwort war: "+antwortVomServer);
pw.close(); //Socket schließen
s.close(); //Socket schließen
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Server:
Java:
package MessPack;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class HojaServerSocket {
public static void main(String[] input) {
try {
ServerSocket so=new ServerSocket(4711);
Socket s=so.accept(); //Server wartet auf Clientverbindungsanfrage, bzw. akzeptiert sie.
InputStream is=s.getInputStream(); //String von Client bekommen
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String tmp=br.readLine();
OutputStream os=s.getOutputStream(); //String senden an Client
PrintWriter pw=new PrintWriter(os);
pw.println(tmp);
pw.close();
s.close();
System.out.println("Eingabe des Clients war: "+tmp);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
So bekomme ich nun immerhin schon mal die Ausgabe: Eingabe war MUL, bzw Antwort war MUL. Aber der Rest dahinter kommt nicht an. Lasse ich clientseitig die for schleife weg und versuche mir mit pw.println(input) die Run args ausgeben zu lassen, so wie ich es bis jetzt kennengelernt habe, bekomme ich folgende Ausgabe: Eingabe des Clients war/Antwort war: [Ljava.lang.String;@119db21f.
Hat jemand ne Idee, wie ich den run Arg Array sauber zum Server und wieder zurück bekomme?
Vielen Dank im Voraus und viele Grüße
Zuletzt bearbeitet von einem Moderator: