Pregunta

Tengo un código C # que está asignando procesos a direcciones IP, básicamente estoy tratando de escribir algún software que vea un proceso y me dé la dirección IP para poder escribir un monitor que permita a mis amigos encontrar estar en juegos.

Cuando ejecuto mi aplicación, aunque detecta que un proceso de juego tiene una conexión UDP, pero parece que no puedo obtener la dirección IP.

He ejecutado un paquete más rápido y 78.111.229.123:32000 aparece en el enrutador / puerta de enlace, pero no se muestra en mi aplicación.

¿Alguna idea para ponerme en marcha?

¿Fue útil?

Solución

¿Cómo está configurando el socket en la aplicación del juego? ¿Puedes publicar un ejemplo de tu código de configuración de socket?

¿Está utilizando la dirección comodín y el puerto al crear el socket? Supongo que si su aplicación de juego no se vincula a una dirección IP específica y un puerto explícitamente, esa puede ser la fuente de su problema.

Otra pregunta: ¿está intentando detectar la dirección IP local, la dirección IP remota o ambas?

Si está intentando detectar la dirección IP remota, esto puede ser imposible a menos que la aplicación del juego esté utilizando lo que se conoce como sockets UDP conectados . Aquí es donde las llamadas de la aplicación cliente se conectan en el socket UDP para crear una asociación entre los sockets locales y remotos en el SO subyacente. Esto tiene ciertas ventajas y desventajas que se enumeran en el enlace anterior.

Editar

Eche un vistazo a esta publicación SO: PID del número de socket en Windows?

Esto confirma más o menos lo que pensaba: a menos que el juego esté usando sockets UDP conectados, entonces la única forma en que podrá obtener la dirección remota es mediante la detección de paquetes.

Inicie el juego y ejecute netstat -ap UDP : si ve que no hay direcciones remotas en la lista, eso confirmará la sospecha anterior.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top