蓝牙聊天示例中的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关联的InputStream
或OutputStream
上读取或写入数据)。我错了吗
共 (0) 个答案