G
Guest
Gast
Hallo,
anbei ein Versuch eines Mini-Servers. Man verbindet sich mit ihm
und kann einen Text hinschicken, erhält ihn dann zurück.
Der "Server" hat folgende Schwachstellen:
1. Kommt es zu einem Timeout, wird die Exception ausgelöst,
im Catch-Part kann ich aber kein: client.close() machen,
der Compiler beschwert sich, dass client möglicherweise uninitialisiert ist,
bzw. kann garnicht die Variable "sehen". Ohne client.close bleiben
Clients bei einem Timeout aber einfach als "offen" hängen, z.B. Telnet.
2. Bei einem Timeout und einer daraus folgenden Exception
wird meine While-Schleife unterbrochen, den Catch-Part kann ich
aber auch nicht in die While-Schleife packen, da dies einen Compiler-Fehler
ergibt, da es sich dann mit dem try beisst.
Was kann ich tun?
Vielen Dank!
Thomas
anbei ein Versuch eines Mini-Servers. Man verbindet sich mit ihm
und kann einen Text hinschicken, erhält ihn dann zurück.
Der "Server" hat folgende Schwachstellen:
1. Kommt es zu einem Timeout, wird die Exception ausgelöst,
im Catch-Part kann ich aber kein: client.close() machen,
der Compiler beschwert sich, dass client möglicherweise uninitialisiert ist,
bzw. kann garnicht die Variable "sehen". Ohne client.close bleiben
Clients bei einem Timeout aber einfach als "offen" hängen, z.B. Telnet.
2. Bei einem Timeout und einer daraus folgenden Exception
wird meine While-Schleife unterbrochen, den Catch-Part kann ich
aber auch nicht in die While-Schleife packen, da dies einen Compiler-Fehler
ergibt, da es sich dann mit dem try beisst.
Was kann ich tun?
Vielen Dank!
Thomas
Code:
public class mySocketServer extends Thread {
boolean Terminated=false;
@Override
public void run() {
ServerSocket sserver;
BufferedReader in;
PrintWriter out;
try{
sserver = new ServerSocket(1234, 10, InetAddress.getByName("127.0.0.1"));
while(!Terminated) {
Socket client = sserver.accept();
client.setSoTimeout(2000);
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream());
String message = in.readLine();
out.write(message+"\0");
out.flush();
System.out.println(message);
in.close();
out.close();
client.close();
}
}catch(IOException e)
{
System.out.println("IO-Exception: "+e);
}
return;
}