¿Hay alguna manera de obtener una lista de todos los sockets abiertos (la dirección de socket o el descriptor de socket) en Linux usando C en el espacio de usuario o kernel?¿Cómo obtener una lista de sockets abiertos en Linux usando C?
Gracias
¿Hay alguna manera de obtener una lista de todos los sockets abiertos (la dirección de socket o el descriptor de socket) en Linux usando C en el espacio de usuario o kernel?¿Cómo obtener una lista de sockets abiertos en Linux usando C?
Gracias
abrir y leer el siguiente:
/proc/net/tcp
- una lista de sockets TCP abiertas
/proc/net/udp
- una lista de sockets UDP abiertos
/proc/net/raw
- una lista de todas las Enchufes "sin formato"
Estos son como archivos "normales" que abre y lee con una Filehandle y le dará toda la información que pueda necesitar sobre cada socket.
Los datos brutos se pueden encontrar en/proc/net/tcp,/proc/net/udp, etc. Consulte el encabezado en la primera línea para obtener una descripción (concisa).
En el directorio/proc/self/fd hay enlaces simbólicos falsos que le da todos los descriptores de archivo abiertos - enchufes dan algo así como:
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]
Iterar usando opendir, readdir() y luego interrogarlos utilizando readlink()
Si sabe que el FD 4 es un zócalo, puede llamar a getsockname() para obtener la familia de dirección local, dirección, etc., si está vinculado.
Esto no funciona para todos los enchufes. Sobre todo, veo mis terminales aquí. Con múltiples conexiones abiertas, no todos los enchufes son visibles. Una buena herramienta para tener, además de lo que Shane Mason señaló. Gracias. –
Este programa puede ser útil para usted y demuestra cómo analizar los/net/proc/* archivos sockstat.c
Gracias por el ejemplo. Iba a pasar por/proc/self/fd y ver qué enlaces son conectores y generar la lista de esa manera. Voy a publicar una actualización con mi solución aquí. Gracias de nuevo –
El enlace parece que ya no funciona, aunque google lo busca encuentra varias copias. –
También/proc/net/Unix enumera los sockets de dominio Unix. – zoom23