# J2ME: inputstream.read() vorzeitig beenden



## derpfaff (12. Februar 2008)

Hallo Leute,

habe mal wieder ein Problem und hoffe, ihr könnt helfen.

Ich habe zwei Bluetooth Geräte die kommunizieren müssen. Nun kann es jedoch mal vorkommen, dass die Datenübertragung nicht korrekt funktioniert, also dass statt zwei nur ein Zeichn übertragen wird.
In diesem Fall blockiert jedoch die Funktion read(), da noch ein Zeichen erwartet wird.

Aktuell ist die Datenübertragung in einem Thread ausgelagert.
Ich dachte, dass ich dann mittels der Variable "timeout" das "read()" beenden kann, falls keine Antwort ankommt, aber - logischerweise - überprüft er die Variable ja nicht, denn er hängt ja noch beim Lesen...

Hier wird der Thread gestartet:
	
	
	



```
anz_bytes = 2;
receiveAnswer getAnswer = new receiveAnswer();
getAnswer.start();
long time_2, time_1 = System.currentTimeMillis();            
time_2 = time_1 + 5000;
while(getAnswer.isAlive()) {
   if(time_2 <= System.currentTimeMillis()) {
      timeout = true;
   }
}
```


Hier der Thread:
	
	
	



```
public class receiveAnswer extends Thread {
   public void run() {
      int i = 0;
      buffer = new int[anz_bytes];
      while((i < anz_bytes) && !timeout) {
         try {
            buffer[i] = in.read();
         } catch (IOException ex) {
            ex.printStackTrace();
         }
         i++;
      } 
   }
}
```

Habt ihr eine Idee, wie ich das beenden kann?

Danke und Gruß
derPfaff


----------

