Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Consejo Para Aplicacion
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Consejo Para Aplicacion 
 
Hola a todos, tengo una duda y me gustaria que me aconsejarias de cual es la mejor forma, Os la planteo:
Quiero hacer una aplicación gambas cliente-servidor (la dos aplicaciones pueden llegar a coincidir en la misma maquina), que en la parte servidor ejecute programas y devuelva al cliente el resultado, cree directorios, lea ficheros, se conecte a BBDD mysql, etc, ademas tambien el cliente se conectara a una bbdd mysql en el server, la duda que me surge es saber cual es la mejor forma de hacer todo esto, no se si por socket, o por ssh (con un codigo que he visto por el foro), o a lo mejor existe otra forma (que no sea web, o si) me gustaria que me aconsejarais como podria hacerlo........

gracias
 



 
destroyer - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consejo Para Aplicacion 
 
Hola.

La forma razonable de comunicarse dos aplicaciones es mediante sockets. En el software servidor creas un socket server y en el software cliente creas un socket cliente. Eso tiene muy poca dificultad; sin embargo no es lo único porque tienes que tener en cuenta el problema de la seguridad.

¿a que me refiero con seguridad?
Pues que es posible que una tercera parte malintencionada intente hacerse pasar por un cliente y se comunique con tu server para conseguir información o simplemente por accidente porque utiliza la misma máquina y el mismo puerto. Tu tienes que estar seguro que aquel con quien hablas es un cliente válido.

Es decir, tienes que establecer una relación segura.

El otro problema de la seguridad es el fallo de comunicación. Pudiera ocurrir que por algún defecto de transmisión parte del mensaje se perdiera o se cambiara (por ejemplo que a causa del ruido se cambie un cero por un uno. Tu tienes que estar seguro que lo que recibes es lo que te han mandado.

Prevenir el maléfico malvado
Para el primer caso puedes usar ssh o también cualquier sistema de claves pública y privada que garantice que aquel con quien hablas es quien dice ser. Para el segundo, cada mensaje que se envía debería llevar anexado un código que permita comprobar si el mensaje es correcto.

Así que pongamos que el cliente A quiere comunicarse con el servidor B. Los pasos a seguir son:
1. El saludo. A envía un HOLA a B presentándose como CLIENTE.
2. El saludo. B responde un HOLA a A presentándose como servidor.
En este punto ambas partes han conseguido comunicarse con la otra. Si esto falla la comunicación debe interrumpirse.

3. A envía su clave pública a B.
4. Be envía su clave pública a A.
Ahora A y B comparan la clave pública recibida con una que ya tienen guardada anteriormente y que les sirve para reconocerse. Si son distintas la comunicación termina porque una de las partes es falsa.

Si todo esto ha ido bien ya tenemos una relación segura.
5. A envía encriptado con la clave pública de B el mensaje que quiere.
6. B realiza lo pedido por A y devuelve una respuesta encriptada con la clave pública de A.

Este proceso continúa cuanto haga falta. El cliente pide lo que necesita y obtiene resultados. Cuando ya no necesita mas termina la comunicación
7. A envía un ADIOS a B.
8. B clierra la conexión.

Todos estos mensajes que se han enviado pueden tener problemas de comunicación como dije. Por eso cada mensaje lleva anexado un código de comprobación. Eso es lo que se llama un CRC.

Prevenir el fallo de comunicación
Pongamos que deseas enviar HOLA. Lo que harías es llamar a una función de clacular CRC con el argumento HOLA. Esa función te devuelve el valor 0755. Pues tu envías HOLA0755. La otra parte cuando recibe HOLA 0755 separa el HOLa y el 0755. Luego llama a la función de hacer CRC con HOLA y si le sale 0755 es que el mensaje HOLA no ha sufrido cambios durante la comunicación. En caso de que sean distintos se responde con un REPITE para que envien el mensaje de nuevo.

Así es como las cosas se hacen bien. Ahora haz lo que quieras y diviértete con ello je je je.

 
 



 
última edición por soplo el Viernes, 15 Octobre 2010, 13:36; editado 1 vez 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consejo Para Aplicacion 
 
Mejor respuesta imposible................muchas gracias. asi lo hare.
 



 
destroyer - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consejo Para Aplicacion 
 
Tienes código en base de conocimientos para implementar el cálculo de CRC y todo eso, pero yo en tu caso empezaría con lo mas simple.

En vez de calcular el CRC lo que haría es sumar el valor de los códigos ascii del mensaje y anexarlo al mensaje. Es una forma muy simple y mala de comprobar un mensaje pero para una aplicación en estado alfa te vale.

Utilizar claves públicas también te complicará la vida. Tienes que instalar gpg o algo similar y aprender a utilizarlo que eso tiene su propia ciencia. Yo empezaría por hacer tu propia clave pública que sea un simple string único para cada máquina (por ejemplo el hostname o algo así).

Para irlo enriqueciendo y asegurándolo siempre hay tiempo. De otra forma puede ocurrir que acabes perdiendo el norte que es lo que suele pasar cuando para enviar un simple HOLA tienes que montar un sistema de encriptación (que te va a dar problemas integrarlo) y un sistema de CRC

Por eso te digo. Primero que tu programa funcione. Luego lo vas asegurando y versionando. Como ya sabes a donde tienes que llegar vete planificando el desarrollo.

Un saludo.
 
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consejo Para Aplicacion 
 
Mi solución: limpia, eficaz, rápida, segura (usa SSH) y multiplataforma cliente.

freeNX

tienes una versión sencilla y rápida de instalar usando el NX Server de http://www.nomachine.com, el único inconveniente es que la versión server de NX de nomachine es un máximo de 2 conexiones simultaneas(pero para hacer las pruebas te sirve)

Por otro lado yo tengo servidores con openSUSE 11.2 con el freeNX y con 25 usuarios ejecutando la aplicación en diversas plataformas: mac OS X Tiger, Leopard, ubuntu y Windows XP, 2000, 7 y sin problemas. únicamente instlado los cliente de nomachine en los equipos clientes y hago que accedan via web al NX Builder (esto permite muchisimas ventajas)

Los que conozcan citrix y su "Web interface" ya saben de que hablo

Si obtas por implantar freeNX te puedo ayudar.

Saludos

Pedro Aguilar
 




===================
Saludos / Best Regards

Pedro Aguilar

http://edrossuse.blogspot.com
Desarrollador de LNXGEST
 
última edición por estrella_de_galicia el Viernes, 15 Octobre 2010, 15:00; editado 1 vez 
estrella_de_galicia - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consejo Para Aplicacion 
 
Lo que yo conozco de nomachine, es que se utiliza como escritorio remoto ¿te refieres a eso?. Actualmente en casa lo tengo asi desde los dos portatiles que tengo accedo al servidor a traves del nxcliente.

No se si eso es a lo que te refieres.........si no es eso por favor explicame.
 



 
destroyer - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consejo Para Aplicacion 
 
Visto el codigo CRC tomo nota de ello........gracias de nuevo

soplo escribió: [Ver mensaje]
Tienes código en base de conocimientos para implementar el cálculo de CRC y todo eso, pero yo en tu caso empezaría con lo mas simple.

En vez de calcular el CRC lo que haría es sumar el valor de los códigos ascii del mensaje y anexarlo al mensaje. Es una forma muy simple y mala de comprobar un mensaje pero para una aplicación en estado alfa te vale.

Utilizar claves públicas también te complicará la vida. Tienes que instalar gpg o algo similar y aprender a utilizarlo que eso tiene su propia ciencia. Yo empezaría por hacer tu propia clave pública que sea un simple string único para cada máquina (por ejemplo el hostname o algo así).

Para irlo enriqueciendo y asegurándolo siempre hay tiempo. De otra forma puede ocurrir que acabes perdiendo el norte que es lo que suele pasar cuando para enviar un simple HOLA tienes que montar un sistema de encriptación (que te va a dar problemas integrarlo) y un sistema de CRC

Por eso te digo. Primero que tu programa funcione. Luego lo vas asegurando y versionando. Como ya sabes a donde tienes que llegar vete planificando el desarrollo.

Un saludo.
 

 



 
destroyer - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consejo Para Aplicacion 
 
destroyer escribió: [Ver mensaje]
Lo que yo conozco de nomachine, es que se utiliza como escritorio remoto ¿te refieres a eso.


También sirve como escritorio remoto, pero lo que yo hago es ejecutar únicamente la aplicación. de esta forma. la aplicación se integra con la interfaz del usuario (sea windows, linux o mac) con lo que en lugar de visualizar un escritorio grafico entero, tan solo ejecuta dicha aplicación.

Es decir. Ejecutas los programas del servidor NX en el servidor, peeeero lo visualizas en el equipo cliente. Vamos, un citrix. 2X Server etc.

Héchale una ojeada al siguiente link

http://www.nomachine.com/testdrive.php
 




===================
Saludos / Best Regards

Pedro Aguilar

http://edrossuse.blogspot.com
Desarrollador de LNXGEST
 
última edición por estrella_de_galicia el Viernes, 15 Octobre 2010, 15:53; editado 1 vez 
estrella_de_galicia - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consejo Para Aplicacion 
 
pero es que eso es otra cosa. Eso es ejecutar aplicaciones remotas que no tiene nada que ver. Para acceso remoto a una sesión linux hay multitud de posibilidades incluyendo servicios terminal server, vnc, ..., etc. Lo que pregunta destroyer es la capacidad de interactuar entre sí distintas aplicaciones en una misma máquina o en máquinas distintas.

 
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consejo Para Aplicacion 
 
Efectivamente soplo, eso es a lo que me referia, voy a tirar por el camino que me has indicado, ya os contare. De todas formas muchas gracias estrella_de_galicia.
 



 
destroyer - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron