BluetoothSocket accept() IOException

  • 3 Antworten
  • Neuester Beitrag
Diskutiere BluetoothSocket accept() IOException im Android App Entwicklung im Bereich Betriebssysteme & Apps.
P

Peter123

Fortgeschrittenes Mitglied
Ich möchte zwischen zwei Geräten eine Bluetoothverbindung herstellen.
Das funktioniert auch soweit, jedoch gibt es dabei ein Problem:

Auf dem Gerät von welchem ich connecte wird mir bei
Code:
try {
                    // This is a blocking call and will only return on a
                    // successful connection or an exception
                    socket = mmServerSocket.accept();
                } catch (IOException e) {
                    Log.e(TAG, "Socket Type: " + mSocketType + "accept() failed", e);
                    break;
                }
eine IOException ausgeworfen:


BluetoothChatService Socket Type: nullaccept() failed
BluetoothChatService java.io.IOException: Operation Canceled


Dies hat zur Folge, dass dieses Gerät dann keine Daten vom anderen Gerät empfangen kann. Das Senden der Daten funktioniert aber einwandfrei.
 
snowman2

snowman2

Fortgeschrittenes Mitglied
Peter123 schrieb:
Auf dem Gerät von welchem ich connecte wird mir bei
Wenn ich dich richtig verstehe Baust du eine BT-Verbinung als Client auf. Also hast du bereits einen gültigen BluetoothSocket über den du sendest was ja auch funktioniert.

Peter123 schrieb:
Dies hat zur Folge, dass dieses Gerät dann keine Daten vom anderen Gerät empfangen kann. Das Senden der Daten funktioniert aber einwandfrei.
Das verstehe ich nicht. Wenn das Senden funktioniert, dann hast du bereits einen Socket. Wenn du bereits einen Socket hast, brauchst du
"socket = mmServerSocket.accept();" nicht mehr aufrufen. Das brauchst du nur wenn das Gerät als Server fungiert. Und das widerspricht sich zu meiner Vermutung von oben.

Woher bekommst du deinen
mmServerSocket ?
 
Zuletzt bearbeitet:
P

Peter123

Fortgeschrittenes Mitglied
Meinen mmServerSocket bekomme ich hiermit:

Code:
 try {
    //tmp = mAdapter.listenUsingRfcommWithServiceRecord(NAME, MY_UUID);
    tmp = InsecureBluetooth.listenUsingRfcommWithServiceRecord(mAdapter, NAME, MY_UUID, true);
            	
     } catch (IOException e) {
          Log.e(TAG, "Socket Type: " + mSocketType + "listen() failed", e);
      }
         mmServerSocket = tmp;
 
snowman2

snowman2

Fortgeschrittenes Mitglied
Wie siehts den mit meinen anderen Fragen aus?
Du forderst ja entweder eine Verbindung als Client an oder du wartest auf eine Verbindung als Server.
Wenn ich dich richtig verstehe agierst du als Client und dann brauchst du keinen ServerSocket und kein accept().
Evtl verstehe ich dich aber auch nur falsch.