android-是否连接的BluetoothSocket RFCOMM通道是唯一的,而不考虑UUID?

android-是否连接的BluetoothSocket RFCOMM通道是唯一的,而不考虑UUID?,第1张

概述基本问题:如果我在Android2.2中打开了多个蓝牙连接,那么UUID对确保所用RFCOMM通道的唯一性有影响吗?背景:我想创建一个Android应用程序,该应用程序将驻留在多(3)个不同的Android手机上(最低Android版本2.2).该应用程序的每个实例将通过蓝牙相互通信.因此,每个应用程序将同时打开多

基本问题:
如果我在Android 2.2中打开了多个蓝牙连接,那么UUID对确保所用RFCOMM通道的唯一性有影响吗?

背景:
我想创建一个AndroID应用程序,该应用程序将驻留在多(3)个不同的AndroID手机上(最低AndroID版本2.2).该应用程序的每个实例将通过蓝牙相互通信.因此,每个应用程序将同时打开多个蓝牙连接,以与所有参与的应用程序通信.

我知道这是(至少)有可能的,因为我扩展了BluetoothChat示例应用程序,以支持N个全部以聊天室类型一起聊天的客户端.因此,我有能力同时保持打开多个蓝牙连接.

我关心的是androID文档中的以下语句:
“与TCP / IP不同,RFCOMM一次只允许每个通道一个连接的客户端,因此在大多数情况下,在接受连接的套接字后立即在BluetoothServerSocket上调用close()是有意义的.”
(http://developer.androID.com/guIDe/topics/wireless/bluetooth.HTML)

现在,我对聊天室风格的BluetoothChat应用程序的实现告诉我,打开同时连接的方法会导致在不同RFCOMM通道上的连接(否则,我会得到连接失败或串扰).但是,我不确定我的方法的哪一部分会导致不同的RFCOMM渠道,而这就是这个问题.

打开多个蓝牙连接的方法有两个部分:
1.我不再使用同一个BluetoothServerSocket对象来通过反复调用accept()来接受多个连接,而是创建了一个线程,该线程为我要接受的每个连接调用ListenUsingRfcommWithServiceRecord(String,UUID).
2.我没有为每个连接使用相同的UUID,而是由我手动管理的一组7个UUID,以使每个accept()都位于使用不同UUID创建的BluetoothServerSocket上.

现在,我从文档中了解到的是ListenUsingRfcommWithServiceRecord(String,UUID)向SDP数据库添加了一个条目以进行监听.显然,我为每个接受的连接创建不同的SDP数据库条目这一事实至少是为每个连接使用不同的RFCOMM连接的部分原因.但是UUID在这里有什么影响吗?如果我要在7个不同的线程上都使用相同的UUID调用该方法7次,它仍然可以工作吗?还是不同的UUID导致使用不同的RFCOMM通道?

显然,这里的问题是,如果我必须为我的应用程序管理7个不同的UUIDS,那么在打开和关闭连接时确保可用连接UUIDS的正确同步可能是一个巨大的麻烦.如果在调用ListenUsingRfcommWithServiceRecord(String,UUID)时,任何人都可以确认或否认UUID对RFCOMM通道选择有影响,那么它将大有帮助.

(未讨论-UUID对连接端的影响,createRfcommSocketToServiceRecord(UUID);我的假设是,如果保留传入消息,则可能保留传出消息.)

感谢任何能提供帮助的人.

解决方法:

根据我的收集,要使用的渠道取决于其UUID.因此,多个连接到同一通道将失败.

总结

以上是内存溢出为你收集整理的android-是否连接的BluetoothSocket RFCOMM通道是唯一的,而不考虑UUID?全部内容,希望文章能够帮你解决android-是否连接的BluetoothSocket RFCOMM通道是唯一的,而不考虑UUID?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1070210.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存