RealHAZZARD
Erfahrenes Mitglied
Hallo,
ich habe mir eine Anwendung gebaut, die über einen gewissen Port wacht. Sinn ist es später einmal Eine Fernsteuerung der Anwendung möglich zu machen und bei erneuten start der Anwendung ein Indiz dafür zu haben, dass die Anwendung (Daemon) noch läuft und nicht noch einmal gestartet werden soll.
Aber soweit bin ich noch nicht einmal. Ich bekomme immer eine SocketException, wenn der Client den Stream auslesen möchte.
Auszug meines Servers:
Mein Client:
Wenn ich die Serverseite debugge gibt es keine Auffälligkeiten. Der Server kann lesen was der Client schickt. Und so wie es zumindest aussieht, schick er auch die Ausgabe auf die Reise.
Ich verstehe nicht was das sein soll.
Habe auch schon den Virenschutz temporär deaktiviert, aber keine Besserung.
Ich dachte vielleicht liegt es auch daran, dass ich auf Arbeit hinter einem Proxy sitze. Aber auch zuhause ging es nicht.
Selbst wenn ich es mal nicht von localhost zu localhost versuche, sondern über einen entfernten Rechner tritt das Problem auf.
Hiiiiiilllfffeeeee!
ich habe mir eine Anwendung gebaut, die über einen gewissen Port wacht. Sinn ist es später einmal Eine Fernsteuerung der Anwendung möglich zu machen und bei erneuten start der Anwendung ein Indiz dafür zu haben, dass die Anwendung (Daemon) noch läuft und nicht noch einmal gestartet werden soll.
Aber soweit bin ich noch nicht einmal. Ich bekomme immer eine SocketException, wenn der Client den Stream auslesen möchte.
Auszug meines Servers:
Java:
public void init(String[] args) throws ManagerException {
try{
serverSocket = new ServerSocket(RemoteAccessManager.PORT);
}catch(IOException ioe){
LoggingManager.getInstance().log(LogLevel.ERROR, ioe);
setMr(new MonitoringReport(REPORTLEVEL.ERROR,"Remote access is not availible",id));
}
listen();
setMr(new MonitoringReport(REPORTLEVEL.OK,null,id));
}
private void listen(){
for(int i=0;i<5;i++) addThread();
}
private void addThread(){
Thread t = new Thread(new ClientHanlder());
t.setDaemon(true);
t.start();
}
private class ClientHanlder implements Runnable{
@Override
public void run() {
try{
Socket client = serverSocket.accept();
InputStream is = client.getInputStream();
OutputStream os = client.getOutputStream();
byte[] bin = new byte[is.available()];
String out = null;
is.read(bin);
String in = new String(bin);
if(in != null){
if(in.equals(RemoteAccessProtocol.REQUEST_PING)) out = RemoteAccessProtocol.RESPONSE_PING;
else if (in.equals(RemoteAccessProtocol.REQUEST_STOP)) out = stopDaemon();
}
if(out != null){
os.write(out.getBytes());
}
is.close();
os.close();
client.close();
client = null;
setMr(new MonitoringReport(REPORTLEVEL.OK,null,id));
}catch(IOException ioe){
LoggingManager.getInstance().log(LogLevel.EXCEPTION,ioe);
setMr(new MonitoringReport(REPORTLEVEL.WARN,ioe.getMessage(),id));
}
addThread();
}
}
Mein Client:
Java:
try{
Socket testClient = new Socket("localhost",RemoteAccessManager.PORT);
InputStream is = testClient.getInputStream();
OutputStream os = testClient.getOutputStream();
os.write(requestText.getBytes());
os.flush();
byte[] bin = new byte[1024];
is.read(bin); //Hier knallt es
is.close();
os.close();
testClient.close();
testClient = null;
return new String(bin);
}catch(IOException ioe){
return null;
}
Wenn ich die Serverseite debugge gibt es keine Auffälligkeiten. Der Server kann lesen was der Client schickt. Und so wie es zumindest aussieht, schick er auch die Ausgabe auf die Reise.
Ich verstehe nicht was das sein soll.
Habe auch schon den Virenschutz temporär deaktiviert, aber keine Besserung.
Ich dachte vielleicht liegt es auch daran, dass ich auf Arbeit hinter einem Proxy sitze. Aber auch zuhause ging es nicht.
Selbst wenn ich es mal nicht von localhost zu localhost versuche, sondern über einen entfernten Rechner tritt das Problem auf.
Hiiiiiilllfffeeeee!