C'è un modo per ottenere un elenco di tutti i socket aperti (indirizzo socket o descrittore di socket) in Linux usando C nello spazio utente o nel kernel?Come ottenere una lista di socket aperti in Linux usando C?
Grazie
C'è un modo per ottenere un elenco di tutti i socket aperti (indirizzo socket o descrittore di socket) in Linux usando C nello spazio utente o nel kernel?Come ottenere una lista di socket aperti in Linux usando C?
Grazie
aprire e leggere il seguente:
/proc/net/tcp
- una lista di socket TCP aperte
/proc/net/udp
- un elenco di socket UDP aperte
/proc/net/raw
- un elenco tutte le prese "raw"
Questi sono come file "normali" che si aprono e si leggono con un filehandle e ti fornirà tutte le informazioni che potresti avere su ogni socket.
I dati grezzi possono essere trovati in/proc/net/tcp,/proc/net/udp, ecc. Fare riferimento all'intestazione nella prima riga per una descrizione (tersa).
In directory/proc/self/fd ci sono link simbolici falsi dandovi tutti i descrittori di file aperti - prese di dare qualcosa di simile:
lrwx------ 1 root root 64 2009-05-08 07:45 4 -> socket:[4921]
lrwx------ 1 root root 64 2009-05-08 07:45 5 -> socket:[4918]
lrwx------ 1 root root 64 2009-05-08 07:45 6 -> socket:[5395]
Iterate utilizzando opendir, readdir() e poi interrogarli utilizzando readlink()
Se si sa che FD 4 è un socket, è possibile chiamare getsockname() su di esso per ottenere la famiglia di indirizzo locale, l'indirizzo ecc., Se associato.
Questo non funziona per tutti i socket. Per lo più, vedo i miei terminali qui. Con più connessioni aperte, non tutte le prese sono visibili. Buono strumento non-meno di avere in aggiunta a ciò che Shane Mason ha notato. Grazie. –
Questo programma può essere utile per voi e dimostra come analizzare i/net/proc/* file sockstat.c
Grazie per l'esempio. Stavo per passare attraverso/proc/self/fd e controllare quali collegamenti sono socket e generare l'elenco in questo modo. Pubblicherò un aggiornamento con la mia soluzione qui. Grazie ancora –
Link sembra non funzionare più, anche se le ricerche di google ne trova diverse copie. –
anche/proc/net/unix elenca i socket di dominio Unix. – zoom23