平台独立的Qt5方式获取开放的TCP端口

时间:2016-01-08 14:05:00

标签: qt tcp cross-platform port qt5

在Qt中是否有一种独立于平台的方式来获取未使用的TCP端口?我需要启动一个现有的应用程序,必须给它一个开放的TCP端口才能使它工作。

2 个答案:

答案 0 :(得分:5)

使用QTcpServer更简单。

bool QTcpServer::listen(const QHostAddress & address = QHostAddress::Any, quint16 port = 0)

如果port为0,则自动选择port,然后使用quint16 QTcpServer::serverPort() const获取“空闲”端口

然后关闭您的Tcp服务器

OR

生成一个ramdom端口,使用QTcpSocket连接它(本地连接)

  1. 如果已连接,则您的端口为QTcpSocket::localPort()并关闭此tcp套接字
  2. 如果没有连接,你的端口是随机端口;

答案 1 :(得分:0)

你的意思是某种tcp服务器?然后是QTcpServer类。

如果要启动existiong服务器,则需要QProcess类。例如:

QString program = "path/to/server";
QStringList arguments;
arguments << "-p" << "1234"; //or what ever you want

QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);