package de.tuchemnitz.informatik.TOPES07.Sensoren;
import java.io.*;
import java.net.*;
//import de.tuchemnitz.informatik.TOPES07.datenmanager.events.SensorEvent;
/**
* Erstellen eines Sockets und Warten auf neue Verbidungen die dann in einem
* neuen Thread abgearbeitet werden.
*
* @author Karsten Knuth
*/
public class SensorServer implements Runnable {
Thread listener;
ServerSocket server;
/**
* Starten den Programms
*
* @param args Komandozeilen Parameter
*/
public static void main(String args[]) {
new SensorServer();
}
/**
* Aufbauen des Sockets und Starten des Threads
*/
public SensorServer () {
try {
server = new ServerSocket(6389);
listener = new Thread(this);
listener.start();
}
catch(Exception e) {
e.printStackTrace();
}
}
/**
* Ausfürhen des Threads:
* Warten auf neue Verbindungen und Abarbeiten dieser in einem neuen Thread
*/
public void run() {
try {
while(true) {
Socket client = server.accept();
new SensorClient(client).start();
}
}
catch(Exception e) {
e.printStackTrace();
}
}
}
/**
* Warten an einem instanziierten Socket, Empfang der Daten und Weiterleiten
* der Daten an die entsprechenden Methoden.
*
* @author Karsten Knuth
*/
class SensorClient extends Thread {
Socket s;
DataInputStream in = null;
/**
* Initialisieren des SensorClient
*
* @param s Socket an dem Empfangen werden soll
* @throws IOException Thows IOException wenn fehlerhafte Kommunikation am Socket vorliegt
*/
public SensorClient(Socket s) throws IOException {
in = new DataInputStream(s.getInputStream());
}
/**
* Auslesen der Daten am Socket, Auswerten und Zuordnen zu den einzelnen
* Messagetypen
*/
public void run(){
try {
// SensorEvent event = new SensorEvent();
String message, messageid;
while(true){
message = in.readLine();
messageid = message.substring(0,1);
// event.SensorKnotenID = Integer.valueOf(message.substring(2,3)) + 10 * Integer.valueOf(message.substring(1,2));
if(messageid.equals("0")){
System.out.print("Lichtschranke bei Sensor " + message.substring(1,3) + " wurde unterbrochen");
}
else if(messageid.equals("1")){
System.out.print("Lichtschranke bei Sensor " + message.substring(1,3) + " wurde aufgebaut");
}
else if(messageid.equals("H")){
System.out.print("Lichtschranke bei Sensor " + message.substring(1,3) + " wurde eingeschaltet");
}
else if(messageid.equals("A")){
System.out.print("Beschleunigung bei Sensor " + message.substring(1,3) + " wurde festgestellt");
}
}
}
catch(IOException e) {
try{
in.close();
}
catch(Exception e1){}
this.stop();
}
}
}