我正在为 Android 手机编写一款多人游戏。通信是通过蓝牙进行的。我已经设法使用输入/输出流将字节从一部手机发送到另一部手机。因为我需要能够传输对象,所以我想要对象流。但是,当我尝试使用我的流创建对象流时,我的程序在指令上挂起。
public class ConnectedThread extends Thread {
private static final String TAG = "Connected Thread";
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private final OutputStream mmOutStream;
private Handler mHandler;
private ObjectInputStream ois;
private ObjectOutputStream oos;
public ConnectedThread(BluetoothSocket socket,Handler h) {
mmSocket = socket;
mHandler = h;
InputStream tmpIn = null;
OutputStream tmpOut = null;
// Get the input and output streams, using temp objects because
// member streams are final
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) { }
mmInStream = tmpIn;
mmOutStream = tmpOut;
Log.d(TAG,"attempting to create OIS");
try {
ois = new ObjectInputStream(mmInStream);
//指令 new ObjectInputStream(mmInStream) 永远不会执行完。它似乎没有抛出错误,因为我会捕获它。它只是卡在这条指令上。此行以下的代码均未执行。
} catch (Exception e) {
Log.e(TAG,"Error");
Log.d(TAG,e.getMessage());
e.printStackTrace();
}
Log.d(TAG,"attempting to create OOS");
try {
oos = new ObjectOutputStream(mmOutStream);
} catch (IOException e) {
Log.e(TAG,"IO exception for Output Stream, I have no idea what caused this");
Log.d(TAG,e.getMessage());
}
}
public void run() {.....}
我做错了什么?
最佳答案
只需构造 ObjectOutputStream,
和 flush()
它,在构造 ObjectInputStream 之前 两端。
您不必编写自己的任何数据。
关于java - 无法在 Android 平台上为蓝牙套接字使用 InputStream 创建 ObjectInputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5605153/