Как перенести базу данных sqlite3 между двумя устройствами Android с помощью Socket? - PullRequest
0 голосов
/ 02 марта 2012

Я прочитал этот Bluetooth-чат пост, и этот Передача файла пост. И у меня есть два реальных устройства Android, не AVD, мой Намерение состоит в том, чтобы установить IP-адрес и порт в одном устройстве, которое действует как Клиент, в то время как другое действует как Сервер.

Они используют WIFI, и я подключил их обоих к ПК соответственно. Зайдите в оболочку adb и пингуйте друг друга. Это работает. Я написал код клиента так:

    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, должно быть что-то другое с обычными текстовыми файлами, но в чем разница?

Будем очень благодарны за любые предложения.

1 Ответ

3 голосов
/ 02 марта 2012

Было бы неразумно переносить sqlite3 .db между устройствами, которые могут отличаться от производителя / модели / производителя / и т. Д.Скорее, вы должны сбросить схему и содержимое базы данных в csv или sql и передать их.Вы можете также сжать файл перед передачей.

Что касается работы в сети с Android.Если вы используете AVD (эмулятор), вы обнаружите, что это невозможно или почти невозможно.Ваш прокси также играет важную роль в работе сети, поэтому вам нужно знать, что он позволяет, как он настроен в данный момент и как он себя ведет (ошибки, причуды, функции).Вам следует использовать такой инструмент, как wireshark, для проверки сетевых коммуникаций и убедиться, что ваше приложение даже отправляет что-то, прежде чем беспокоиться о том, получено ли это что-либо.

...