gpt4 book ai didi

Java蓝牙套接字重新启动后不接受连接

转载 作者:行者123 更新时间:2023-12-01 05:21:40 25 4
gpt4 key购买 nike

我一整天都在为这个问题摸不着头脑。我有一个监听设备的蓝牙 socket 。这是通过 AsyncTask 完成的。我第一次尝试从远程设备连接到它时,没有遇到任何问题。现在我正在尝试模拟断开连接。超出范围、关闭远程设备的蓝牙适配器或只是远程关闭连接。现在,当连接丢失时,服务器套接字会抛出 IOException。我用它作为重启 AsyncTask 并再次开始监听的提示。这似乎工作正常,我的所有 logcat 消息都会在重新启动时显示,因此我知道任务正在运行,但套接字不会接受连接。我认为这可能是重新启动 AsyncTask 时出现的问题,因此我尝试在接受连接后立即转储连接。重置它们后,即使我调用 system.gc(),我仍然遇到同样的问题。

这是我现在用来测试的一些代码:

boolean running = true;
while(running){
btAdapter = BluetoothAdapter.getDefaultAdapter();
btServerSocket = btAdapter.listenUsingRfcommWithServiceRecord(NAME, ID);
btSocket = btServerSocket.accept();

btServerSocket.close();
btSocket.close();

btServerSocket = null;
btSocket = null;
btAdapter = null;

System.gc();
sleep(10);
}

我真的不知道我做错了什么。非常感谢任何帮助。

谢谢。

最佳答案

如果您仅在 Android 2.3.x 上看到此问题,那么您可能遇到了我刚刚在另一个问题中提到的问题。这个问题也表现为accept()第一次工作,但随后连续尝试失败。看我的帖子here了解详情。

关于Java蓝牙套接字重新启动后不接受连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10308211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com