C ++中的空闲TCP端口列表,不使用带端口= 0的bind()

时间:2016-05-07 15:15:25

标签: c++ tcp ffmpeg port

我需要创建一组动态ffmpeg实例,用于侦听C ++程序中可用的端口。 ffmpeg实例使用标识为ffmpeg -i tcp://ip:port?listen ...的命令创建,其中端口号应为可用空闲端口。然后在c ++程序中使用execv()执行ffmpeg命令。

因此,我需要找到一个当前无法使用bind() port=0的免费端口。据我了解,bind()会在尝试检查端口是否可用时绑定端口。

如果有办法在C ++中实现这一点,请告诉我。

感谢。

1 个答案:

答案 0 :(得分:3)

您可以首先使用端口为0的 color = vec4(sqrt(M/S)); ,这将自动绑定到空闲和未使用的端口。然后,使用bind()找出您绑定的端口。然后关闭套接字,并执行getsockname()侦听器,将其指向刚刚关闭的端口。

当然,在关闭套接字和ffmpeg启动之间,其他任何东西都可以进入并抓住此端口。但无论你如何确定哪个端口可用,这都将成为现实。

通过更多的工作,你可以使这个过程变得更加可靠:继续告诉ffmpeg绑定到端口0.假设它工作,在创建它的套接字后你可以查看{{1找到它的套接字,然后查看ffmpeg以确定它绑定到哪个端口。