В каталоге / proc / self / fd есть поддельные символические ссылки, дающие вам все ваши дескрипторы открытых файлов - сокеты дают что-то вроде:
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]
Итерируйте их, используя opendir, readdir (), а затем опрашивайте их, используя readlink ()
Если вы знаете, что FD 4 является сокетом, вы можете вызвать для него функцию getsockname (), чтобы получить семейство локальных адресов, адрес и т. Д., Если они связаны.