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.