Wie man eine Liste der geöffneten sockets in Linux mit C?
Gibt es eine Möglichkeit, um eine Liste aller offenen sockets ( socket-Adresse oder den socket-Deskriptor ) in Linux mit C, die im user-space oder kernel?
Danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
Öffnen und Lesen Sie die folgenden:
/proc/net/tcp
- eine Liste der offenen TCP-sockets/proc/net/udp
- eine Liste der geöffneten UDP-sockets/proc/net/raw
- eine Liste all der "raw" - socketsDiese sind wie "normale" Dateien, die Sie öffnen und Lesen Sie mit einem filehandle und geben Ihnen alle Informationen, die Sie eventuell benötigen könnten zu jeder Steckdose.
Dieses Programm kann nützlich sein für Sie und zeigt, wie Sie zu analysieren /net/proc/* - Dateien sockstat.c
Im Verzeichnis /proc/self/fd es gibt gefälschte symlinks geben Sie alle Ihre offenen Datei-Deskriptoren - sockets geben Sie etwas wie:
Durchlaufen Sie mit opendir, readdir() und dann befragen Sie Sie mit readlink()
Wenn Sie wissen, dass die FD-4 ist eine Buchse, können Sie dann aufrufen, getsockname() auf, die lokale Adresse, Familie, Anschrift etc, wenn gebunden.
Den raw-Daten finden Sie unter /proc/net/tcp und /proc/net/udp, etc. Finden Sie die Kopfzeile in der ersten Zeile für eine (knappe) Beschreibung.