【发布时间】:2014-07-28 06:17:34
【问题描述】:
我从来没有写过类似的东西, 我如何使用c程序检查端口是否为空 在 Linux 环境下 非常感谢。
ps 正在寻找一种方法,不使用 bind 或 connect 并检查它是否失败。
编辑 我无法使用绑定或连接,正在寻找更快的方法来找到连续空闲的 3k 端口
【问题讨论】:
-
这里的链接stackoverflow.com/a/10294941/2959769 解释了这如何导致竞争状况
-
请记住端口不只是“开放”和“封闭”。它们受接口和协议的约束。您可以让一个应用程序在接口
lo中打开端口 80 TCP,另一个应用程序在同一接口中打开相同的端口但 UDP,以及其他两个应用程序在接口eth0中执行相同的操作等。相同的端口由许多不同的打开服务器,他们都会对此感到满意。 -
相关:unix.stackexchange.com/a/15513/31228 建议保留连续端口范围的策略。
-
@VinayShukla 对于许多应用程序,例如,在只有服务运行且没有用户启动连接的服务器上,这种竞争条件发生的可能性非常低,值得冒险采取任何策略用于检查空闲端口,无论是否实际绑定到它们。