如何在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();
答案 0 :(得分:3)
只需指定端口0和绑定即可。系统将为您提供下一个可用端口。不需要循环。
答案 1 :(得分:1)
您可以尝试使用QTcpSocket::bind()
。如果端口打开成功,它将返回bool(true)。
QTcpSocket *socket = new QTcpSocket();
qint16 port = 1025;
while(!socket->bind(port, QAbstractSocket::DontShareAddress))
{
port++;
}
socket已绑定到端口。