Socket JavaProg über einen Clienten steuern

  • Themenstarter Themenstarter Murrassel
  • Beginndatum Beginndatum
M

Murrassel

Gast
Servus,

ich habe seit diesem Semester Java im Nebenfach und dafür müssen wir ziemlich schwierige Aufgaben lösen. Wir mussten einen Automaten Programmieren was auch nach langerm rumprobieren funktioniert hat. Nun soll dieser Automat aber über eine Socketverbindung von einem clienten gesteuert werden. Ich habe dies versucht, doch scheitere und weiß nicht woran es liegt. In der Konsole wird mir immer nur Störung ausgegeben aber nicht das was ich möchte.


Java:
import java.net.*;
import java.io.*;

public class B3A1c {

	public static void main(String[] args) {
		// Deklarationen:
		int count=0;
		byte[] tmpEingabe;
		int zustand=0;
		String Eingabe;
		String Ausgabe="";
		ServerSocket s1=null;
		Socket mySocket=null;
		InputStream s2=null;
		OutputStream s3=null;
	
		
		try{
			// Server Socket erstellen:
			s1= new ServerSocket(5060);
			//warten auf Verbindungsanfrage:
			mySocket=s1.accept();
			//Eingebarstrom für Kommunikationssocket erstellen.
			s2=mySocket.getInputStream();
			s3=mySocket.getOutputStream();
	
		
			
		}
		
		catch (Exception e){
			System.out.println("IOFehler");
		}
		
		
		//Endlosschleife, in der Eingabe, der Automat und Ausgabe läuft:
		while (true){				
			//EINGABE:
			try{	
				tmpEingabe =new byte[60];
				count= s2.read(tmpEingabe,0,60);
				Eingabe = new String(tmpEingabe, 0, count);
				
			}
			catch(Exception e){
				Eingabe="stop";
			}
		//Wenn Eingabe "stop" dann Programm beenden:
			if (Eingabe.equals("stop\r\n")){
				System.exit(0);
			}
			
		//BEGINN AUTOMAT:
			switch(zustand){
			//Zustand 0 "Bereit":
			case 0:{
				if (Eingabe.equals("start\r\n")){
					zustand=1;				  
					Ausgabe="Transport zum Scanner, Zustand=1;";
				
				}
				else{
					Ausgabe="Störung";
				}
				
				break;
			}
				
			//Zustand 1 "Transport zum Scanner:
			case 1:{
				if (Eingabe.equals("scan ok\r\n")){
					zustand=2;
					Ausgabe="Transport zum Lager, Zustand=2;";
					
				}
				else if (Eingabe.equals("nicht ok\r\n")){
					zustand=2;
					Ausgabe="Transport zu Etikettierer und Bearbeitungestation, Zustand=2;";
					
				}
				else{
					Ausgabe="Störung";
				}
				break;
			}
				
			// Zustand 2 "Transport zu Lager oder Bearbeitung":
			case 2:{
				if (Eingabe.equals("ok\r\n")){
					zustand=0;
					Ausgabe="Bereit, Zustand=0;";
					break;
				}
				else{
					Ausgabe="Störung";
				}	
				break;
			}							
				//ENDE AUTOMAT				
										
			}
			//AUSGABE:
			
			System.out.println(Ausgabe);
			
		}
	}
}
 
Ja, "Störung" als Debuginformation ist nicht wirklich wertvoll. Gib dir aus WAS du da eigentlich vergleichen willst, dann wirst du vllt erkennen was schief läuft.
 
Sorry, habe mich nicht deutlich genug ausgedrückt. In der Endlosschleife habe ich angegeben dass bei falschen Angaben in der Konsole Störung ausgegeben wird. Doch ich habe über den Clienten immer die richtige Eingabe versendet
 
Das habe ich ja gemacht, wenn ich dem Server sage, dass er die Empfangenen Daten auf der Konsole ausgeben soll, gibt er genau das aus was ich über den clienten gesendet habe, doch wenn ich damit etwas steueren will sagt mir der Server, NEIN
 
Ich seh in deinem Quelltext kein NEIN.

Sorry, aber wie die anderen schon gesagt haben "geht nicht" hilft uns nicht und dir damit auch nicht.

Fliegen Exceptions? Hast du mal debugged?

Liegts vielleicht an dein Linebreaks?

Java:
(if (Eingabe.equals("ok\r\n")){
 

Neue Themen


Zurück
Oben