2016-10-30 2 views
0

Я работаю над проектом, и до сих пор у меня есть приложение для Android с SQL-сервером с веб-сервером, работающим в моем андроиде и php-приложении, также на моем устройстве.Автономное приложение для ПК, подключающееся к Android sqllitedatabase

Итак, моя проблема. Мое приложение PHP доступно с помощью любого веб-браузера ПК, потому что есть внутренний веб-сервер (lighttp).

Однако мой клиент сказал, что мы не хотим использовать этот подход и предпочитаем иметь автономное приложение, которое может подключаться к моему устройству, читать базу данных и генерировать отчеты.

Я очень усталый парень .. что вы, ребята, рекомендуете его реализовать? Я мог написать программное обеспечение в java и сгенерировать отчет, но я не уверен, как подключиться к базе данных устройства.

IP-адрес, используемый устройством, доступен для подключения (ping работает без проблем).

Что вы, ребята, рекомендуете?

ответ

0

Хорошо, что, поскольку ваш клиент не хочет использовать предварительно построенный веб-сервер, вы можете создать сервер с php для обработки запросов вашего приложения для Android.

PHP предлагает поддержку для надежных соединений TLS.

Это пример кода сервера с веб-сайта. Я рекомендую установить php7, если вы еще не установили его, и я не уверен, что вы можете запустить код сервера без него.

#!/usr/local/bin/php -q 
<?php 
error_reporting(E_ALL); 

/* Allow the script to hang around waiting for connections. */ 
set_time_limit(0); 

/* Turn on implicit output flushing so we see what we're getting 
* as it comes in. */ 
ob_implicit_flush(); 

$address = '192.168.1.53'; // Your IP 
$port = 10000; // Your Port 

if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) { 
echo "socket_create() failed: reason: " . 
socket_strerror(socket_last_error()) . "\n"; 
} 

if (socket_bind($sock, $address, $port) === false) { 
echo "socket_bind() failed: reason: " . 
socket_strerror(socket_last_error($sock)) . "\n"; 
} 

if (socket_listen($sock, 5) === false) { 
echo "socket_listen() failed: reason: " . 
socket_strerror(socket_last_error($sock)) . "\n"; 
} 

do { 
if (($msgsock = socket_accept($sock)) === false) { 
    echo "socket_accept() failed: reason: " . 
socket_strerror(socket_last_error($sock)) . "\n"; 
    break; 
} 
/* Send instructions. */ 
$msg = "\nWelcome to the PHP Test Server. \n" . 
    "To quit, type 'quit'. To shut down the server type 'shutdown'.\n"; 
socket_write($msgsock, $msg, strlen($msg)); 

do { 
    if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) { 
     echo "socket_read() failed: reason:" .        
     socket_strerror(socket_last_error($msgsock)) . "\n"; 
     break 2; 
    } 
    if (!$buf = trim($buf)) { 
     continue; 
    } 
    if ($buf == 'quit') { 
     break; 
    } 
    if ($buf == 'shutdown') { 
     socket_close($msgsock); 
     break 2; 
    } 
    $talkback = "PHP: You said '$buf'.\n"; 
    socket_write($msgsock, $talkback, strlen($talkback)); 
    echo "$buf\n"; 
} while (true); 
socket_close($msgsock); 
} while (true); 
socket_close($sock); 
?> 

Ссылка на PHP сокета Пример: http://php.net/manual/en/sockets.examples.php

Вы также можете использовать ответы на этот пост, чтобы получить андроида устройство, подключенное к серверу работает PHP.

Не забудьте открыть порт, который вы выбрали в своем системном брандмауэре! И в вашем маршрутизаторе, если вы хотите, чтобы он был общедоступным, но остерегайтесь незваных гостей, подключающихся к вашей сети!

how to create Socket connection in Android?

+0

большое спасибо за ваш ответ ... проблема .. мой клиент не хочет веба-сервера на всех .. он просто хочет проблему установки, которая работает, как только он установлен. Итак, нет веб-сервера, нет DNS-серверов ... просто чистое автономное приложение. – user1657666

+0

@ user1657666 Необходим ли сервер lighttp для того, что вы пытаетесь выполнить?Учитывая, что вы не подключаетесь к какому-либо внешнему источнику, вы должны выполнять всю свою клиентскую сторону процесса без какого-либо сервера. Я напишу еще один ответ, который вам может понравиться. –

+0

lighttp - это веб-сервер для моего php, который установлен на устройстве. Тем не менее, мой клиент очень тупой, и ему это не нравится .. он хочет традиционное приложение на базе ПК на C#, VB.NET, Java и т. Д. Я пытаюсь понять, как напрямую подключаться к базе данных на устройстве , – user1657666

0

Чтение и запись во внутреннюю базу данных в вашем Android устройстве может быть достигнуто с помощью классов SQLiteOpenHelper и SQLiteDatabase, которые встроены в Android SDK.

См Android Документация: https://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html

Вот чрезвычайно полезный учебник для чтения и записи в базу данных SQLite в устройстве. В учебнике используются классы, о которых я упомянул выше. Этого должно быть достаточно, чтобы начать работу с данными ваших клиентов без использования сервера lighttp или php-кода: http://www.vogella.com/tutorials/AndroidSQLite/article.html#tutorial-using-sqlite

Вот еще одно связанное сообщение, которое может оказаться полезным.

Reading data from Sqlite Database in android application.

+0

Спасибо за ваш ответ, но идея состоит в том, чтобы приложение, установленное на ПК, способное читать db с устройства Android. – user1657666

Смежные вопросы