Pour une application, je communique entre deux smartphones en bluetooth. Seulement mes communications doivent être rapides, je souhaite donc utiliser le protocoles UDP plutôt que du TCP.

D'habitude (en wifi ou ethernet), pour envoyer des datagrammes UDP j'utilise les classes DatagramSocket et DatagramPacket.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
DatagramSocket socket = new DatagramSocket();
DatagramPacket packet = new DatagramPacket(message.getBytes(), message.length(), InetAddress.getByName(hostIP), port);
socket.send(packet);
En bluetooth par contre j'utilise la classe BluetoothSocket.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
BluetoothDevice device; //récupéré lors de la connection
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID);
socket.connect();
OutputStream outStream = socket.getOutputStream();
outStream.write(bytes);
Je ne trouve pas d'information sur quelle est le protocole utilisé par défaut. (Cela ressemble au codage des socket pour TCP) Est-ce donc du TCP par défaut ?
Ni de comment envoyer des datagrammes en bluetooth. Quelqu'un sait comment faire ?
Cela doit être possible puisque UDP est dans la couche 4 du modèle OSI alors que le bluetooth est en couche 1 et 2. Il ne devrait donc pas y avoir de souci.