Hallo,
ich habe mal eine Frage bezügl. Threads.
Ich gebe in der Skeleton Klasse einen Thread ab, wenn wenn eine Verbindung herein kommt, soweit so gut. Wenn ich dann aber in der Thread Klasse die Verbindung annehmen will fliegt mir alles um die Ohren.
Gruß
ClockSkeleton (Server):
ServerThread:
ich habe mal eine Frage bezügl. Threads.
Ich gebe in der Skeleton Klasse einen Thread ab, wenn wenn eine Verbindung herein kommt, soweit so gut. Wenn ich dann aber in der Thread Klasse die Verbindung annehmen will fliegt mir alles um die Ohren.
Gruß
ClockSkeleton (Server):
Code:
public class ClockSkeleton
{
public static void main (String args[]) throws IOException
{
Socket talkSocket;
try {
while(true)
{
ServerSocket listenSocket = new ServerSocket(4711);
talkSocket = listenSocket.accept();
// Kommunikation an einen nebenläufigen Thread abgeben
ServerThread t = new ServerThread(talkSocket);
t.start();
}
}
catch (IOException e) {e.printStackTrace();}
//catch (IllegalCmdException e) {e.printStackTrace();}
//catch (InterruptedException e) {e.printStackTrace();}
}
}
ServerThread:
Code:
package vsy.clockdemo.server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class ServerThread extends Thread {
private Socket talkSocket;
public ServerThread(Socket talkSocket)
{
this.talkSocket = talkSocket;
}
public void run()
{
//Socket talkSocket;
BufferedReader fromClient;
OutputStreamWriter toClient;
String stringToConvert;
String zeit="";
while(true)
{
try{
Clock handler = new Clock();
fromClient = new BufferedReader(new InputStreamReader(talkSocket.getInputStream(),"Cp1252"));
toClient = new OutputStreamWriter(talkSocket.getOutputStream(),"Cp1252");
stringToConvert= fromClient.readLine();
if(stringToConvert.charAt(0)=='s')
{
handler.start();
toClient.write("Clock Timer gestartet.");
System.out.println("Client drückt 'S'.");
}
if(stringToConvert.charAt(0)=='g')
{
toClient.write("Clock steht bei: "+handler.getTime()+"ms");
System.out.println("Client drückt 'G'.");
}
if(stringToConvert.charAt(0)=='r')
{
handler.reset();
toClient.write("Clock wurde resettet.");
System.out.println("Client drückt 'R'.");
}
if(stringToConvert.charAt(0)=='h')
{
zeit=""+handler.halt();
toClient.write("Clock wurde gestoppt bei: " +zeit+"ms");
zeit="";
System.out.println("Client drückt 'h'.");
}
if(stringToConvert.charAt(0)=='c')
{
handler.conTinue();
toClient.write("Clock wird fortgesetzt bei "+handler.getTime()+" ms.");
toClient.flush();
System.out.println("Client drückt 'c'.");
}
if(stringToConvert.charAt(0)=='e')
{
toClient.write("Clock wurde beendet.");
toClient.flush();
System.out.println("Client hat Uhr beendet.");
handler.exit();
}
if(stringToConvert.charAt(0)=='w')
{
int laenge=stringToConvert.length();
stringToConvert=stringToConvert.substring(2,laenge);
long teilstring=Long.parseLong(stringToConvert);
System.out.println("Client: Client verlangt Verzögerung um "+teilstring+" ms.");
handler.waitTime(teilstring);
toClient.write("Clock wurde um "+teilstring+" ms verzögert.");
toClient.flush();
}
toClient.close();
fromClient.close();
talkSocket.close();
}
catch (IOException e) {e.printStackTrace();}
catch (IllegalCmdException e) {e.printStackTrace();}
//catch (InterruptedException e) {e.printStackTrace();}
}
}
}