在windows中获取下一个打开的tcp端口

时间:2014-07-16 10:51:19

标签: c++ windows qt tcp

如何在Windows上获得下一个打开的tcp端口 我在网上搜索过,我遇到了用Qt编写的TcpPortsGatherer ... 唯一的问题是它在我目前的Qt版本中不可用,或者它应该用作插件
所以我正在寻找一种使用TcpPortsGatherer Class的方法 或者只使用本机Windows库(如果有的话)

更新:

我使用Sebastian的方法如下所示将找到的端口绑定到我运行的外部二进制文件,但它总是将端口1025分配给可执行文件,我该如何解决这个问题?

QTcpSocket *socket = new QTcpSocket();
qint16 port = 1025;
while(!socket->bind(port, QAbstractSocket::DontShareAddress))
  port++;
socket->close();
socket->deleteLater();

2 个答案:

答案 0 :(得分:3)

只需指定端口0和绑定即可。系统将为您提供下一个可用端口。不需要循环。

答案 1 :(得分:1)

您可以尝试使用QTcpSocket::bind()。如果端口打开成功,它将返回bool(true)。

QTcpSocket *socket = new QTcpSocket();
qint16 port = 1025;
while(!socket->bind(port, QAbstractSocket::DontShareAddress))
{
  port++;
}

socket已绑定到端口。