Bluetooth – RFCOMM
Bei RFCOMM handelt es sich, wie im vorangegangenen Kapitel beschrieben, um ein serielles Übertragungsprotokoll. Bluetooth nutzt das bekannte Konzept von Sessions und Connections. Zwischen zwei Bluetooth-Geräten kann genau eine Session aufgebaut werden, welche aus einer oder mehreren Connections besteht. Mehrere Sessions können von Bluetooth-Geräten nur aufgebaut werden, wenn jede
Session mit einem anderen Gerät verbunden ist.
Um eine Kommunikation über RFCOMM aufzubauen werden folgende Klassen benötigt: StreamConnectionNotifier, StreamConnection, LocalDevice, ServiceRecord, InputStream und OutputStream.
Für einen Server wird zunächst der Service mit einer URL registriert (siehe Service Registration), mit der blockierenden Methode acceptAndOpen() wird auf eine eingehende Clientverbindung gewartet. Sobald diese aufgebaut ist, kann mit den Methoden openInputStream() und openOutputStream() der Klasse StreamConnection eine Instanz eines Input- und OutputStreams erzeugt werden, welche zum senden und empfangen benutzt werden.
Der URL-String für eine RFCOMM – Verbindung beginnt mit “btspp://â€, dies gibt an, dass es sich um eine Bluetooth-Verbindung über das Serial Port Profile ( SPP ) handelt. Danach folgt eine UUID, welche selbstgeneriert sein kann (128 Bit lang), falls es sich um einen eigenen Service handelt, abschließend kann noch der Name des Service an den URL angehängt werden. Komplett sieht der URL-String dann etwa wie folgt aus:
“btspp://localhost:AABBCCDDEEFF00112233445566778899;name=myconn”
Für eine Clientverbindung zu einem bestimmten Service wird ebenfalls eine StreamConnection über Connector.open() erzeugt, welcher der URL des Services aus dem ServiceRecord-Objekt ( getConnectionURL() ) übergeben wird, welches man aus der ServiceDiscovery erhalten hat.
Ähnliche Artikel zu "Bluetooth – RFCOMM":
Wenn Du noch Fragen zum Thema Bluetooth – RFCOMM hast, dann schreib einfach einen Kommentar - oder schau dir meine Buchtipps an:
July 27th, 2009 at 3:43 pm
hallo
ich bin auch gerade daran eine server-client anwendung zu schreiben wobei der pc als client und das handy als server agiert. hab es ähnlich aufgebaut wie du, nur beim input-outputstream bin ich etwas anders vorgegangen.
verwendest du auf dem server und auf dem client OutputStream bzw. InputStream? oder arbeitest du auch mit DataInputStream?
bei mir funktioniert das ganze nicht so richtig…
danke und grüsse