2009-05-08 8 views

Odpowiedz

16

otworzyć i przeczytać następujące:

/proc/net/tcp - listę otwartych gniazd TCP

/proc/net/udp - wykaz otwartych gniazd UDP

/proc/net/raw - wykaz wszystkich "surowe" gniazda

Są to "zwykłe" pliki otwierane i czytane za pomocą filehandle i da ci wszystkie informacje, których możesz potrzebować o każdym gnieździe.

+3

Również/proc/net/unix wymienia gniazda UNIX. – zoom23

0

Dane nieprzetworzone można znaleźć w/proc/net/tcp,/proc/net/udp, itp. Odwołaj się do nagłówka w pierwszym wierszu, aby uzyskać (zwięzły) opis.

3

W katalogu/proc/self/fd są fałszywe dowiązania dając Ci wszystkie otwarte deskryptory plików - Gniazda dać coś takiego:

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 je za pomocą opendir, readdir(), a następnie przesłuchać je za pomocą readlink()

Jeśli wiesz, że FD 4 jest gniazdem, możesz wywołać metodę getsockname(), aby uzyskać lokalną rodzinę adresów, adres itp., Jeśli są powiązane.

+0

To nie działa dla wszystkich gniazd. Przeważnie widzę tutaj moje terminale. Przy otwartych wielu połączeniach nie wszystkie gniazda są widoczne. Dobre narzędzie, które nie ma nic wspólnego z tym, co zauważył Shane Mason. Dziękuję Ci. –

4

Ten program może być przydatne dla Ciebie i demonstruje sposób analizowania/net/proc/* pliki sockstat.c

+0

Dzięki za przykład. Właśnie przechodziłem przez/proc/self/fd i sprawdzałem, które łącza są gniazdami i generują listę w ten sposób. Zamieść tutaj aktualizację z moim rozwiązaniem. Jeszcze raz dziękuję –

+0

Link wydaje się nie działać, chociaż wyszukiwarka google znajduje kilka kopii. –

Powiązane problemy