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.
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);
}
}
}