Domanda

Ho del codice c # che sta mappando i processi su indirizzi IP, sto fondamentalmente cercando di scrivere un software che guarderà un processo e mi dia l'indirizzo IP in modo da poter scrivere un monitor che consenta agli amici per trovarsi nei giochi.

Quando eseguo la mia applicazione, tuttavia, rileva che un processo di gioco ha una connessione UDP ma non riesco a ottenere l'indirizzo IP.

Ho eseguito un packetsniffer e 78.111.229.123:32000 viene visualizzato sul router / gateway ma non viene visualizzato nella mia applicazione.

Qualche idea per farmi funzionare?

È stato utile?

Soluzione

Come si imposta il socket nell'applicazione di gioco? Puoi pubblicare un esempio del codice di configurazione del socket?

Stai usando l'indirizzo jolly e la porta durante la creazione del socket? Immagino che se la tua applicazione di gioco non si lega a un indirizzo IP specifico e porta esplicitamente, ciò potrebbe essere la fonte del tuo problema.

Un'altra domanda: stai cercando di rilevare l'indirizzo IP locale, l'indirizzo IP remoto o entrambi?

Se stai provando a rilevare l'indirizzo IP remoto questo potrebbe essere impossibile a meno che l'applicazione di gioco non stia usando ciò che è noto come prese UDP connesse . È qui che le chiamate dell'applicazione client si connettono sul socket UDP per creare un'associazione tra i socket locali e remoti nel sistema operativo sottostante. Ciò presenta alcuni vantaggi e svantaggi elencati nel link sopra.

Modifica

Dai un'occhiata a questo post SO: PID dal numero di socket su Windows?

Questo praticamente conferma ciò che pensavo - a meno che il gioco non utilizzi socket UDP connessi, l'unico modo in cui sarai in grado di ottenere l'indirizzo remoto è tramite lo sniffing dei pacchetti.

Avvia il gioco ed esegui netstat -ap UDP - se vedi che non ci sono indirizzi remoti elencati, ciò confermerebbe il sospetto sopra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top