[C#] Mejor forma de comunicar datos entre servidor y cliente

Iniciado por devLand93, 10 Marzo 2019, 18:37 PM

0 Miembros y 2 Visitantes están viendo este tema.

devLand93

Hola, espero estén bien...

Estoy intentando crear una aplicación en mi servidor donde me lea la actividad de mi teclado y mouse y la repita en todos los ordenadores donde tenga instalado el programa cliente.

Todos los clientes tienen la misma resolución de pantalla, así que eso no sería un problema (por las coordenadas del mouse)

Empecé por hookear el teclado y mouse para registrar la actividad de estos, las almaceno en variables, pero ahora estoy buscando la mejor y más óptima forma de enviar estas pulsaciones a mis clientes, estaba pensando en una de estas opciones, pero no sé cual sea la mejor.

Quisiera una sugerencia de alguien con experiencia, ya que la comunicación será continua, claro que comprendo que la velocidad del internet será un factor influyente, pero a pesar de eso, busco la mejor forma de hacerlo.

Saludos y gracias.

Eleкtro

#1
Nunca me he visto en la necesidad de controlar múltiples máquinas de forma remota y en tiempo real mediante un dispositvo de mouse/teclado (además, ya hay programas profesionales para llevar a cabo esa tarea, por lo que yo no reinventaría la rueda), así que hablo desde la inexperiencia en ese escenario remoto en particular, pero de todas formas creo que te puedo ayudar a decidir...

Un Socket mediante protocolo UDP parece ser lo más óptimo al proporcionar alto rendimiento y baja latencia en comparación con el protocolo TCP, al menos según esta respuesta y el comentario que lo apoya:


Por último, aquí tienes unos ejemplos si los llegases a necesitar:


Saludos.








devLand93

Hola, sí, sé que VNC, TeamViewer, Anydesk, etc... hacen este tipo de actividades de forma óptima, pero solo puedo manejar un ordenador a la vez, y este experimento me lleva a hacerlo en múltiples ordenadores a la vez, a demás que no necesito ver la pantalla de cada uno.

Gracias, revisaré cada enlace.

Eleкtro

#3
Cita de: Sirvaude en 10 Marzo 2019, 20:40 PM
Hola, sí, sé que VNC, TeamViewer, Anydesk, etc... hacen este tipo de actividades de forma óptima, pero solo puedo manejar un ordenador a la vez

Pero yo no me refería a ninguno de esos prrogramas, sino más bien a los que te permiten controlar múltiples equipos, como por ejemplo:


Esos programas no los he utilizado nunca, ya que como dije nunca me he visto en la necesidad. Pero estoy convencido de que puedes averiguar muchos más programas y que sean óptimos para tus circunstancias, solicitando ese tipo de programa en la comunidad de Software Recommendations:


Saludos.








devLand93

Cita de: Eleкtro en 11 Marzo 2019, 01:27 AM
Pero yo no me refería a ninguno de esos prrogramas, sino más bien a los que te permiten controlar múltiples equipos, como por ejemplo:


Esos programas no los he utilizado nunca, ya que como dije nunca me he visto en la necesidad. Pero estoy convencido de que puedes averiguar muchos más programas y que sean óptimos para tus circunstancias, solicitando ese tipo de programa en la comunidad de Software Recommendations:


Saludos.

Por un momento me sentí decepcionado porque creí que estaba perdiendo el tiempo al ver las dos primeras aplicaciones, entonces las probé y bueno, ahora sigo programando.  :xD

No he probado la sección de recomendaciones de softwares de SE, porque probablemente marcarán mi solicitud como un sin sentido, ya que de hecho es algo con poco sentido, y dudo mucho que haya algo por allí ya creado ya que no tiene ningún propósito del cual alguien pudiera sacarle provecho, es un proyecto extraño la verdad, pero bueno, seguiré en él a ver si logro el cometido.

Gracias igualmente, iré contándote que tal me va.

ThunderCls

-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

devLand93

Cita de: ThunderCls en 14 Marzo 2019, 20:28 PM
Supongo que pudieras echarle un ojo a algunos codigos de administradores de escritorios remotos y ver los metodos que usan, luego es solo tomar los aspectos que necesitas y usarlos en tu aplicacion segun se acomode a lo que deseas.

https://github.com/quasar/QuasarRAT
https://github.com/wearelegal/CinaRAT
https://github.com/NYAN-x-CAT/AsyncRAT-C-Sharp
https://github.com/sach3000/Chaber
https://www.codeproject.com/Articles/43705/Remote-Desktop-using-C-NET
https://stackoverflow.com/questions/23545717/c-sharp-remote-desktop-application-using-rdp-how-to-generate-the-certificate
https://opensourceprojects.org/remote-desktop-connection-using-c/


Hola, gracias por tu mensaje, pero me parece algo exagerado para algo tan simple jeje, la verdad no fue necesario.

Con la simple conexión UDP y un socket fue suficiente para lograr lo que quería, hay cierto lag cuando la conexión no es LAN (servidores muy lejanos) pero funcionó como esperaba.

Gracias.