java - 无法在 Android 平台上为蓝牙套接字使用 InputStream 创建 ObjectInputStream

标签 java android bluetooth objectoutputstream objectinputstream

我正在为 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/

相关文章:

java - 当 FXML 解析太慢时,JavaFX 中的繁忙弹出窗口

java - Swing中是否有监听启用/禁用事件的监听器?

java - 使用相同的 SecureRandom 生成不同的 key 对是否安全?

android - 在 Android 2.3 上实现 OBEX 推送服务器

ios - 找不到 IBeacon

java - Jsoup 解析器仅针对特定 URL 无法按预期工作

android - 无法在 Android 应用程序中 POST MultiPartEntity

android - locationListener 在前台服务 30 秒后不起作用

java - 无法解析构造函数 jsonobjectrequest

java - 通过蓝牙将字符串从作为客户端的 PC 发送到作为服务器的移动设备