Hallo,
in meiner Applikation verwende ich eine TCP Schnittstelle (Socket) um mich mit einem Remotegerät zu verbinden, Mittels OutputStream und InputStream sende und empfange ich die Daten. Das klappt so weit alles wunderbar.
Mein Problem liegt darin, ein reconnect zu machen, wenn ich eine gewisse Zeit lange auf einen Anfrage keine Antwort bekommen habe.
Das hat jetzt meiner Meinung nach nichts mit dem Socket- Timeout zu tun, das hat ich auch eingestellt und zieht, wenn keine Verbindung hergestellt werden konnte, hilft aber nichts, wenn die Verbindung besteht, das Remote- Gerät aber keine Daten mehr sendet.
Kennt jemand vielleicht ein Möglichkeit, wie ich auf dem InputStream einen Timeout setzen kann bzw. wie würdet ihr das am besten/resourcenschonensten machen in der unteren Methode (Timer, Thread?)
Methode zum Senden an Remote- Device:
in meiner Applikation verwende ich eine TCP Schnittstelle (Socket) um mich mit einem Remotegerät zu verbinden, Mittels OutputStream und InputStream sende und empfange ich die Daten. Das klappt so weit alles wunderbar.
Mein Problem liegt darin, ein reconnect zu machen, wenn ich eine gewisse Zeit lange auf einen Anfrage keine Antwort bekommen habe.
Das hat jetzt meiner Meinung nach nichts mit dem Socket- Timeout zu tun, das hat ich auch eingestellt und zieht, wenn keine Verbindung hergestellt werden konnte, hilft aber nichts, wenn die Verbindung besteht, das Remote- Gerät aber keine Daten mehr sendet.
Kennt jemand vielleicht ein Möglichkeit, wie ich auf dem InputStream einen Timeout setzen kann bzw. wie würdet ihr das am besten/resourcenschonensten machen in der unteren Methode (Timer, Thread?)
Methode zum Senden an Remote- Device:
Java:
public void writeToRemote(final byte[] request) {
try {
outputStream.write(request);
outputStream.flush();
sendTime = System.currentTimeMillis(); // hier müsste ich dann einen Timer starten, um erkennen zu
können, dass nach einer Zeit x keine Daten zurückgekommen sind
}
catch(SocketException ste) {
System.out.println("SocketTimeoutException in SendThread run: " + ste);
reconnect();
}
catch (Exception e) {
e.printStackTrace();
}
}