C++ 如何获取其他进程的TCP/UDP套接字对的远程端口

C++ 如何获取其他进程的TCP/UDP套接字对的远程端口,c++,linux,sockets,tcp,process,C++,Linux,Sockets,Tcp,Process,在Linux上,假设我们有在机器上运行的某个进程的PID。是否可以获取此进程拥有的所有套接字对的所有远程端口?怎么做 我们可以通过解析执行netstat-anp | grep PID的输出来获取此进程所拥有的端口,我可以通过getifaddrs()获取此机器的IP地址,然后将该部分拖到xxx.xxx.xxx.xxx:。但我无法知道与目标进程通信的另一端的ip地址 TCP 使用netstat-n显示远程地址和端口 UDP 请注意,上述内容不适用于UDP,因为UDP没有“连接”的概念,因此不能有远程

在Linux上,假设我们有在机器上运行的某个进程的PID。是否可以获取此进程拥有的所有套接字对的所有远程端口?怎么做

我们可以通过解析执行
netstat-anp | grep PID
的输出来获取此进程所拥有的端口,我可以通过
getifaddrs()
获取此机器的IP地址,然后将该部分拖到xxx.xxx.xxx.xxx:。但我无法知道与目标进程通信的另一端的ip地址

TCP 使用
netstat-n
显示远程地址和端口

UDP
请注意,上述内容不适用于UDP,因为UDP没有“连接”的概念,因此不能有远程地址和端口。相反,每个UDP消息都有一个源地址和端口,由目标进程中的单个套接字处理。我肯定还有其他方法,但我个人使用wireshark捕获UDP数据包。正如您可能已经意识到的那样,在实际收到消息之前,您不会知道远程地址。

netstat不是自动显示每个连接套接字的远程地址吗?未绑定到远程地址的UDP套接字显然没有远程端,但其余的都有。Netstat-n提供外部地址及其端口号。