0

在 Linux 上,可以根据创建它们的用户或组(即拥有套接字的人)过滤源自 localhost 的数据包:

iptables ... -m owner --uid-owner $USER --gid-owner $GROUP -p tcp ...

但我想从程序的角度来处理它,在 localhost 上运行并用 C 编写,接收数据包:我绑定到某个端口,这里有一个新的 TCP 连接/UDP 数据包。怎么查出是谁发的?

4

2 回答 2

2

奇怪的用例,但是嘿,也许这样的东西可以工作 - 但它并不漂亮:

  1. 获取accept使用返回的 fd 的 inode 号fstat
  2. /proc/self/net/tcp
  3. 解析并找到与 inode 号匹配的行。
  4. 使用该行的 uid。
于 2013-07-30T11:38:14.917 回答
1

你不能。您将获得远程 IP 地址和端口。而已。

于 2013-07-30T09:56:08.147 回答