none
Como saber si mi programa esta siendo ejecutado en otro pc online RRS feed

  • Pregunta

  • Buenas, me gustaria saber si es que se puede 

    como saber que alguien a ejecutado mi programa en otro ordenador 

    Mientras este este conectado a internet 

    Gracias

    miércoles, 24 de enero de 2018 9:10

Respuestas

  • No se puede hacer directamente de un PC al otro PC, es necesario interponer un intermediario.

    La razón es que normalmente cada uno de los PCs va a estar siempre o casi siempre conectado a una red local que se conecta a la Internet a través de un router con NAT. Esto implica que no puede aceptar conexiones entrantes, solo puede crear conexiones salientes.

    La solución es instalar un servidor en Internet con una dirección pública, y dejar que los dos PCs establezcan una conexión saliente hacia ese servidor. Una vez abiertas ambas conexiones desde los PCs al servidor, éste hace de "puente" y retransmite hacia cada PC lo que quiera enviarle el otro PC. Desde el punto de vista de los dos PCs esto es "transparente", y cada uno de los usuarios cree que se está comunicando con el otro sin darse cuenta de que en realidad está atravesando un servidor intermedio.

    Para programar estas cosas, normalmente se usa alguna librería para simplificar todo el código. La más conocida quizá sea SignalR. Si la buscas por Internet, verás que el ejemplo más habitual consiste en programar un "chat" usando SignalR (que es algo muy parecido a lo que quieres hacer). Estos ejemplos suelen usar un cliente de SignalR implementado en javascript en un navegador, pero de ninguna manera estás obligado a trabajar de esa manera; también existe cliente de SignalR para aplicaciones de escritorio (aunque es más difícil encontrar ejemplos de este tipo).

    • Marcado como respuesta Diablo_Rojo miércoles, 24 de enero de 2018 19:22
    miércoles, 24 de enero de 2018 15:04

Todas las respuestas

  • Podrías instalar en algún servidor web público un WebApi que reciba mensajes de tu aplicación, y programar en la aplicación algo de código que envíe un mensaje que signifique "Hey, me estoy ejecutando!" al servicio WebApi. Después, cuando quieras saber las ejecuciones, interrogas a ese servidor, que lógicamente almacenará en algún sitio las llamadas que reciba.

    Si no quieres programar todo lo anterior, contrata el servicio "Application Insights" en Azure. Utiliza una versión moderna de Visual Studio para que "instrumente" tu programa añadiéndole los Application Insights, y éste automáticamente enviará la información al servicio de Azure. Después puedes acceder a través del portal de Azure para ver toda clase de información sobre la aplicación, desde cuántas veces se ejecutó y en qué reginones del mundo, hasta cuántos errores ha tenido.

    https://docs.microsoft.com/en-us/azure/application-insights/app-insights-windows-desktop

    miércoles, 24 de enero de 2018 9:42
  • Gracias por responde 

    Lo que realmente quiero hacer es que cuando se conecte alguien con el programa tenga la oportunidad de conectar con otra persona que este usando el mismo programa en otro pc 

    No se si me he explicado bien soy mu malo explicandome 

    no me interesa lo del servido, me gustaria  mas cada uno en su pc y conectar con quien quiera 

    no se si se puede hacer de todas formas un saludo 

    y muchisimas gracias

    miércoles, 24 de enero de 2018 13:39
  • No se puede hacer directamente de un PC al otro PC, es necesario interponer un intermediario.

    La razón es que normalmente cada uno de los PCs va a estar siempre o casi siempre conectado a una red local que se conecta a la Internet a través de un router con NAT. Esto implica que no puede aceptar conexiones entrantes, solo puede crear conexiones salientes.

    La solución es instalar un servidor en Internet con una dirección pública, y dejar que los dos PCs establezcan una conexión saliente hacia ese servidor. Una vez abiertas ambas conexiones desde los PCs al servidor, éste hace de "puente" y retransmite hacia cada PC lo que quiera enviarle el otro PC. Desde el punto de vista de los dos PCs esto es "transparente", y cada uno de los usuarios cree que se está comunicando con el otro sin darse cuenta de que en realidad está atravesando un servidor intermedio.

    Para programar estas cosas, normalmente se usa alguna librería para simplificar todo el código. La más conocida quizá sea SignalR. Si la buscas por Internet, verás que el ejemplo más habitual consiste en programar un "chat" usando SignalR (que es algo muy parecido a lo que quieres hacer). Estos ejemplos suelen usar un cliente de SignalR implementado en javascript en un navegador, pero de ninguna manera estás obligado a trabajar de esa manera; también existe cliente de SignalR para aplicaciones de escritorio (aunque es más difícil encontrar ejemplos de este tipo).

    • Marcado como respuesta Diablo_Rojo miércoles, 24 de enero de 2018 19:22
    miércoles, 24 de enero de 2018 15:04
  • Muchisimas gracias Alberto
    miércoles, 24 de enero de 2018 19:22