Socket String Arrays über Socket an Server schicken

mars123

Mitglied
Hallo Leute,

Ich versuche eher verzweifelt einen String Array an meinen Server zu schicken, der die einzelnen
Array Inhalte benutzt um befehle aus zu führen. Mir fiel keine bessere Möglichkeit ein dies zu realisieren.

Der Client sendet also das String Array das erste Element ist der Befehl der ausgeführt wird der zweite soll der Parameter sein. Doch wenn ich das Array schicke bekomme ich glaube ich nur eine Referenz hat jemand vllt. eine Ahnung wie man das realisieren könnte.

Danke im Voraus für Vorschläge.

Der Servercode:

Java:
public class Server {

	
	public static void main(String[] args) throws IOException {
	
		String clientSentence;
		ServerSocket ss = new ServerSocket(7777);
		
		System.out.println("Server wurde gestartet");
		
		while(true)
		{
			
			
			Socket connectionSocket = ss.accept();
			
			BufferedReader inFromClient = 
					new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
			
			// Test um die IP & Port vom Remote Host zu bekommen
			System.out.println("Server accepting new connection from "+
					connectionSocket.getRemoteSocketAddress());
			
			
			clientSentence = inFromClient.readLine();
			System.out.println("Received from Client: " + clientSentence);
			
			
		
			
			// Implementierung der Befehle
			
			if (clientSentence.equals("herunterfahren")){
				System.out.println("Computer wird heruntergefahren");		
				
				//Irgendeine Methode 
				machwas();
				
			}
		
		
		

		}
	}
}

Und der Client Code:

Java:
public class Client {

		public static void senden(final String[] befehl)
		{
			Thread t = new Thread(){

				@Override
				public void run() {
		
					try{
				
						Socket s = new Socket("192.168.178.77", 7777);
			
						PrintWriter out = new PrintWriter(s.getOutputStream(), true);
						out.println(befehl);

					}
					catch (UnknownHostException e) {e.printStackTrace(); } catch (IOException e) {e.printStackTrace();}
	
				}
			};
			t.start();
		}
	
	
		public static void main(String[] args) {
		
			final String[] befehlArr = new String[20];
			
			befehlArr[0] = "herunterfahren";
			befehlArr[1] = "neustarten";
				
			Client cl = new Client();
			cl.senden(befehlArr);
		
		}
		
}
 
Du sendest das ganze Array zum Server.
Java:
out.println
Daher wird, wie in Java üblich, die toString() Methode aufgerufen. Ich habe mal den Client geändert und schon klappt es, obwohl die feste Array-Länge von 20 mir merkwürdig vorkommt😉
Java:
					PrintWriter out = new PrintWriter(s.getOutputStream(), true);
					StringBuilder sb = new StringBuilder();
					for (String string : befehl) {
						sb.append(string);
					}
					out.println(sb.toString());
 
Guten Morgen,

Vielen Dank für die Antwort hat mir wirklich geholfen.

Hattest recht mit der String[20] Array ist echt strange.

Hab jetzt einfach String[] mArr ={"herunterfahren","neustarten"}; genommen, weil er der Client sonst alle für 18 Werte "null" schickt.

Danke nochmal

Gruß
mars
 

Neue Themen


Zurück
Oben