Spanish Duda app cliente - servidor

Carlos marin

Active Member
Licensed User
Hola a todos. tengo unas dudas que llevo un par de días buscando en los foros pero no encuentro lo que busco, me gustaría una orientación u opiniones de quienes tienen mas experiencia

1. tengo una app (Lado A) que envía unos datos o petición para que desde el otro lado (Lado B) llegue la info y la procese (sea otra app o un programa de escritorio .exe aun no decido cual) lo que deseo saber es como valido que la otra app o programa (Lado B) este conectado y/o este en linea?? para poder procesar el pedido. de lo contrario le mostraría al usuario que la app esta cerrada o en offline

2. he estado mirando el b4j por que tengo que hacer la parte servidor (Lado B), y quisiera saber si hay tutoriales en español para poder estudiar, también si es posible utilizar librerías de b4a en este b4j como por ejemplo cargar imagenes de un servidor tal cual lo hace el servicio de Imagedownloader de erel. o utilizar el Customlistview. muchas gracias
 

bgsoft

Well-Known Member
Licensed User
Hola a todos. tengo unas dudas que llevo un par de días buscando en los foros pero no encuentro lo que busco, me gustaría una orientación u opiniones de quienes tienen mas experiencia

1. tengo una app (Lado A) que envía unos datos o petición para que desde el otro lado (Lado B) llegue la info y la procese (sea otra app o un programa de escritorio .exe aun no decido cual) lo que deseo saber es como valido que la otra app o programa (Lado B) este conectado y/o este en linea?? para poder procesar el pedido. de lo contrario le mostraría al usuario que la app esta cerrada o en offline

Hola, te respondo a la parte 1)
Habria muchas formas, enviando un mail desde B, escribiendo B en un hosting,.... una de las mas rápidas seria que via mensaje Push con FireBase (Firebase Cloud Messaging) el B le dijera que está en linea, si A no recibe respuesta en un tiempo es que no está.
La opción de hosting es mas segura, cada vez que B está en linea escribe un fichero y lo borra cuando sale, así a solo tiene que mirar que exista. No es que el Push no sea seguro, pero a veces me he encontrado que por lo que sea el servidor de Google no lo ha enviado, por otro lado tendrias que añadir en ese mensaje la hora en la que le dices que está en linea, por que si tu dispositivo en A está parado cuando lo pongas en marcha recibiras el Push.

Saludos
 

Carlos marin

Active Member
Licensed User
Hola, te respondo a la parte 1)
Habria muchas formas, enviando un mail desde B, escribiendo B en un hosting,.... una de las mas rápidas seria que via mensaje Push con FireBase (Firebase Cloud Messaging) el B le dijera que está en linea, si A no recibe respuesta en un tiempo es que no está.
La opción de hosting es mas segura, cada vez que B está en linea escribe un fichero y lo borra cuando sale, así a solo tiene que mirar que exista. No es que el Push no sea seguro, pero a veces me he encontrado que por lo que sea el servidor de Google no lo ha enviado, por otro lado tendrias que añadir en ese mensaje la hora en la que le dices que está en linea, por que si tu dispositivo en A está parado cuando lo pongas en marcha recibiras el Push.

Saludos

Hola bgsoft gracias por tu respuesta, no se si cuando te refieres a hosting es mandar un dato a una BD, no se si has mirado por ejemplo esas apps de comidas (domicilios.com) cuando uno entra a restaurantes ahí algunos que dicen "cerrado" no se si utilizan la misma lógica que me describes, otra idea que tenia en mente es hacer ping de A a B, pero cuando son muchos puntos B para cargar en una consulta no se que tan viable sea
 

bgsoft

Well-Known Member
Licensed User
Hola Carlos:

Me referia cuando hablaba de Hosting, a un servidor web donde B puede escribir un simple fichero de texto cuando esta on-line y borrarlo cuando no lo está, y A consultar si existe, no hace falta ni abrirlo.

Lo del PING no te lo recomiendo mucho, en la libreria que adapté (https://www.b4x.com/android/forum/t...rary-updated-v-3-03-04-04-2017.76235/#content ) tienes el isOnlinePing6(IpHost As String, timeout As Long) puedas hacer un ping y puedas darle un tiempo de máxima espera, si como tu dices tienes muchos, si estan desconectados el tiempo de espera seriá grande (el que pongas máximo por seguridad), y dependiedo de esa cantidad aunque estuviesen conectado tambien.

Saludos
 

Carlos marin

Active Member
Licensed User
Hola Carlos:

Me referia cuando hablaba de Hosting, a un servidor web donde B puede escribir un simple fichero de texto cuando esta on-line y borrarlo cuando no lo está, y A consultar si existe, no hace falta ni abrirlo.

Lo del PING no te lo recomiendo mucho, en la libreria que adapté (https://www.b4x.com/android/forum/t...rary-updated-v-3-03-04-04-2017.76235/#content ) tienes el isOnlinePing6(IpHost As String, timeout As Long) puedas hacer un ping y puedas darle un tiempo de máxima espera, si como tu dices tienes muchos, si estan desconectados el tiempo de espera seriá grande (el que pongas máximo por seguridad), y dependiedo de esa cantidad aunque estuviesen conectado tambien.

Saludos

Hola bgsoft discúlpame la demora en esta pregunta, yo por ejemplo utilizo ftp para crear archivos y directorios (MKD) en el hosting no se si te refieres a lo mismo por ejemplo cuando B se desconecta como me aseguro de que borre el fichero?. también pensabas en ftp o hay otra manera'?, si de pronto hay un hilo para obtener mas información te lo agradecería mucho
 

bgsoft

Well-Known Member
Licensed User
Hola Carlos, no te preocupes por tu respuesta, no siempre se puede responder al momento.

Si, vía ftp puedes crear un archivo simple de texto en B, y luego desde A con Http bajartelo, si te lo puedes bajar es que existe.

Lo de asegurarte como borras el fichero es cuestión de la aplicacion B, de que cuando vaya a salir borrarlo, si es en B4A al salir puedes poner un servicio en marcha que lo borre y luego pare el servicio el mismo. Si lo haces en otro lenguaje tendrás que buscar algo similar.
Si tienes problemas en B de controlar que han salido, puedes emplear el metodo inverso, A escribe en ese fichero y B cada x tiempo lo borra o sobreescribe, luego A consulta , es mas lento, pero si tienes problemas de no controlar la salida de B seria un método.

Tambien como te dije puedes emplear email, A le envia un mail a B para saber su estado, y B le responde, si no te responde en x tiempo se supone que B no está activo. Si quieres asegurar que no te llegue un mail atrasado escribes la hora de envio en el asunto, por ejemplo. Tambien si puedes controlar la salida de B, B puede enviar un email cuando entra y otro cuando sale

No se si existe un hilo sobre este tema, yo para una aplicación empleo los dos métodos, el del escibrir un fichero y lo de los mails, el de los mails casualmente para saber estados de A, y me va bien, tampoco necesito saber constantemente el estado.

Como te dije, esto es algo que irá muy ligado a la velocidad de respuesta que tengas que dar y que método se adapta mejor a tus requerimientos. Posiblemente si te respondiera mas de uno que hubiese tenido esa necesidad, cada uno habria echo un método diferente. Yo empleé ese por que era el que mejor me iba para las dos aplicaciones y por que los requerimientos de velocidad de respuesta me lo permitian y tambien por que de esto hace años.

Saludos
 

kelevra1602

Member
Licensed User
Y si mediante mensaje Push con FireBase por ejemplo mandas un parámetro cada x tiempo de B a A para decirle que este en linea y si A no recibe nada después de ese x tiempo pues entonces B no esta en linea
 

Carlos marin

Active Member
Licensed User
Y si mediante mensaje Push con FireBase por ejemplo mandas un parámetro cada x tiempo de B a A para decirle que este en linea y si A no recibe nada después de ese x tiempo pues entonces B no esta en linea
gracias kelevra la verdad es que llevo algo de tiempo en esto y aun no me funciona a la perfeccion
 
Y jesus, vos q sos un CRACK! mediante NET es imposible enviar todos los archivos a FTP? enviar no bajar, bajar es mas sencillo pero enviar no existe ninguna guia q diga como podria ser, enviar una carpeta completa... por ejemplo
 
Top