android - 在 Android 中手动设置蓝牙服务器端口
问题描述
我有一个正在运行的蓝牙服务器(Android 应用程序)。我想为它设置一个特定的蓝牙端口来收听。原因是客户端连接大约需要 10-15 秒,因为它需要首先发现服务器(我进行扫描)。
创建服务器的代码如下:
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
UUID my_uuid = UUID.fromString("12345678-f6ff-4f6f-1f1f-f8f8f8fffff8");
try {
BluetoothServerSocket serverSocket = adapter.listenUsingRfcommWithServiceRecord("myBluetoothServer", my_uuid);
sock1 = serverSocket.accept();
i_s = sock1.getInputStream();
o_s = new OutputStreamWriter(socket.getOutputStream());
new Thread(writter).start();
...
问题:如何为服务器指定一个固定的端口号?
当然,我一直在寻找这里,但不容易找到,: https ://developer.android.com/reference/android/bluetooth/BluetoothSocket?hl=ur
我正在寻找类似 serverSocket.setPort(myPortNumber) 的东西(伪代码)
解决方案
蓝牙套接字不存在端口的概念,因为它们不是常规的 TCP/IP 套接字。它们只是被抽象为表现得像一个。
正如您从代码中发现的那样,您指定的是一个 UUID,它是一个服务标识符。连接到蓝牙服务器的过程如下:
- 蓝牙设备扫描:你不能跳过这部分,因为你需要一个有效的蓝牙设备对象
- 已发现设备的服务发现:这是您“检查”蓝牙设备是否正在运行您正在寻找的服务的部分(您的服务 UUID)所以您也不应该跳过这部分,除非您想连接到所有周围的蓝牙设备。
推荐阅读
- python - 将不带分隔符的 .txt 文件抓取到 JSON 对象中
- java - Jsoup 选择器没有找到某个类
- grep - 搜索并打印集合中的两个关键词
- node.js - NodeJs Route 在生产中返回 404,但在本地不返回
- scala - 升级了 spark 版本,在 spark 作业中遇到 java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;)V
- sql - Pyspark 分组和结构化数据
- onnx - onnxruntime:无法导入名称“get_all_providers”
- typescript - Material UI:使用打字稿“keyof”从增强主题中获取值
- c# - 未找到绑定属性/某些数据未显示
- unity3d - JFrog Artifactory 发布与部署