【发布时间】:2023-04-07 23:43:01
【问题描述】:
如何使用本机 C++ 检查远程 UDP 端口是否打开?由于 UDP 是无连接的,因此调用 connect() 没有帮助。我无法尝试绑定它,因为它不是本地的。 nmap 也不能说明。 (但是netstat 可以找到,但我认为它会查看有关打开端口/文件的内部信息)。反正有检测吗?如果我在网络级别向下一层,是否可以通过 C++ 发送 ICMP 消息来检查端口不可达状态?我的意思是,这是否会提供有关端口状态的足够信息?
平台是 Linux。
【问题讨论】:
-
“Native C++”在什么操作系统/平台上?
-
这里的语言不是问题,而是代码执行的特权级别。例如,您可以像
nmap一样从您的 C++ 代码中使用libpcap库。另外,我认为如果您尝试nmap的所有选项,您至少会得到有关端口是否可能打开或过滤的指示,即使在所有情况下都不能100% 确定。netstat和nmap你在哪里使用? -
netstat -lptun 表示在端口 1060 上打开了一个 UDP 端口,但是我似乎忘记了 -sU 用于 nmap。它需要 root 访问才能找出(并且它正确地找出),为什么?
-
(关于
nmap)它已经足够低级了。它基本上利用某些启发式方法来分类观察到的行为是否意味着端口是打开的。但因为这是非常低级的,它需要超级用户权限。 -
@STATUS_ACCESS_DENIED 这些都与远程端口无关。
标签: c++ network-programming udp port port-scanning