有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

蓝牙聊天示例中的javasocket过早关闭

我一直在理解"Bluetooth Chat" example的源代码。{a2}包括一个线程(称为连接线程),在创建socket(本地称为mmSocket)之后,如果一切顺利,则调用连接的方法:

connected(mmSocket, mDevice);

因此,mmSocket作为参数传递。连接的方法具有以下签名:

public synchronized void connected(BluetoothSocket socket, BluetoothDevice device);

包括以下几行:

mConnectThread.cancel(); //mConnetcThread is an instance of ConnectThread

取消方法包括以下代码:

mmSocket.close();

因此,mmSocket关闭,并且作为连接方法的第一个参数传递的socket也将关闭(因为它引用同一个对象),当下一个代码调用时:

mConnectedThread = newConnectedThread(socket); // socket should be already closed

我认为这是错误的,因为socket现在已关闭,我无法对其进行任何操作(比如在与socket关联的InputStreamOutputStream上读取或写入数据)。我错了吗


共 (0) 个答案