Получить удаленный IP-адрес inode, используя C in Linux - PullRequest
0 голосов
/ 20 января 2020

Например, мой /proc/net/tcp содержит:

  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode                                                                         
   2: 0900000A:91E4 0101B85D:0050 01 00000000:00000000 02:00000039 00000000  1000        0 75205 2 0000000000000000 26 4 30 10 -1 

Итак inode = 75205, общение с IP 93.184.1.1.

Как я могу получить этот IP (удаленный адрес) в C?

Я знаю, что могу разделить по пробелам и разобрать вышеизложенное вручную, но это выглядит как плохая идея, есть ли более разумный способ?

1 Ответ

1 голос
/ 20 января 2020

К сожалению, нет другого способа получить такую ​​информацию из пользовательской космической программы. Только ядро ​​знает эту информацию и предоставляет этот файл именно для того, чтобы сделать эту информацию доступной для пространства пользователя.

Если вы посмотрите на исходный код таких инструментов, как ss (он же "socketstat"), вы увидите, что они тоже запрашивают файлы в /proc/net/*, чтобы получить информацию о открытые розетки.

...