【问题标题】:How to transfer sqlite3 database between two Android devices using Socket?如何使用 Socket 在两个 Android 设备之间传输 sqlite3 数据库?
【发布时间】:2012-03-02 11:03:34
【问题描述】:

我已阅读此 Bluetooth Chat 帖子和此 Transfer file 帖子。我有两个真正的 android 设备,不是 AVD,我的 目的是在一台设备中设置 IP 地址和端口,作为客户端,而另一台设备作为服务器。

他们正在使用WIFI,我已经将它们分别连接到PC。进入adb shell,并相互ping。它可以工作。 我写过这样的客户端代码:

    Socket socket = new Socket("192.168.1.142",8888);

        InputStream in = socket.getInputStream();

        byte[] buffer = new byte[in.available()];

        Toast.makeText(this, String.valueOf(in.available()), Toast.LENGTH_LONG).show();

        in.read(buffer);

        String msg = new String(buffer);

        Toast.makeText(this, msg, Toast.LENGTH_LONG).show();

和服务器:

ServerSocket server = new ServerSocket(8888);
        while(true) {
            Socket client = server.accept();

            OutputStream out = client.getOutputStream();

            String msg = "Hello Android!";

            out.write(msg.getBytes());

            client.close();
        }

我已经添加了这个

<uses-permission android:name="android.permission.INTERNET" /> 显示。

但没有回应。我有两个问题:

1.为什么我的客户端没有响应?

2.sqlite3数据库怎么处理,和普通的文本文件肯定是有区别的,但是有什么区别呢?

任何建议将不胜感激。

【问题讨论】:

    标签: android sockets sqlite android-wifi data-transfer


    【解决方案1】:

    在可能不同品牌/型号/制造商/等的设备之间传输 sqlite3 .db 是不明智的。相反,您应该将数据库的架构和内容转储到 csv 或 sql 并传输。您可能还想在传输之前压缩文件。

    至于与 Android 的联网。如果您使用的是 AVD(模拟器),那么您会发现它不可能或几乎不可能。您的代理也在网络中发挥作用,因此您需要注意它允许的内容、当前的配置方式以及它的行为方式(错误、怪癖、功能)。您应该使用诸如 wireshark 之类的工具来检查网络通信,并确保您的应用甚至在担心是否收到该内容之前发送了某些内容。

    【讨论】:

    • 你的建议很有帮助。先转储再传输。但是我在我的项目中转储sqlite3数据库时遇到了很多麻烦。因为我想在我的程序中执行命令,而不是在adb中手动shell。我不想root我的设备以获得权限。现在的问题是如何在我的应用程序中获得root权限。
    • 解决问题=非常糟糕的解决方案。如果发件人的代码库知道架构,则使用该知识将架构传达给收件人。可以通过 SELECT 查询提取数据库的内容。如果收件人没有已经知道架构的代码,那么列名无论如何都不会那么重要,您可以简单地依靠列索引来引用列。
    • 确实,我走错了方向。我认为传输整个 sqlite3 db 会更容易。而且我什至没有考虑过另一端需要什么信息。所以,我'必须考虑更多。非常感谢。
    猜你喜欢
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多