Czy istnieje sposób, aby uzyskać listę wszystkich otwartych gniazd (adres gniazda lub deskryptor gniazda) w systemie Linux przy użyciu C w przestrzeni użytkownika lub jądra?Jak uzyskać listę otwartych gniazd w systemie Linux za pomocą C?
Dziękuję
Czy istnieje sposób, aby uzyskać listę wszystkich otwartych gniazd (adres gniazda lub deskryptor gniazda) w systemie Linux przy użyciu C w przestrzeni użytkownika lub jądra?Jak uzyskać listę otwartych gniazd w systemie Linux za pomocą C?
Dziękuję
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.
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.
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.
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. –
Ten program może być przydatne dla Ciebie i demonstruje sposób analizowania/net/proc/* pliki sockstat.c
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ę –
Link wydaje się nie działać, chociaż wyszukiwarka google znajduje kilka kopii. –
Również/proc/net/unix wymienia gniazda UNIX. – zoom23