独立于平台的 Qt5 获取开放 TCP 端口的方式
Platform independent Qt5 way to get open TCP port
Qt 中是否有独立于平台的方法来获取未使用的 TCP 端口?我需要启动一个现有的应用程序,必须为其提供一个开放的 TCP 端口才能工作。
你是指某种 tcp 服务器吗?然后就是QTcpServerclass.
如果要启动现有服务器,则需要 QProcess class。示例:
QString program = "path/to/server";
QStringList arguments;
arguments << "-p" << "1234"; //or what ever you want
QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);
使用 QTcpServer 更简单。
bool QTcpServer::listen(const QHostAddress & address = QHostAddress::Any, quint16 port = 0)
如果port
为0,自动选择port
,然后使用quint16 QTcpServer::serverPort() const
获取"idle"端口
然后关闭你的 Tcp 服务器
或
生成一个随机端口,使用QTcpSocket
连接它(本地连接)
- 如果已连接,您的端口是
QTcpSocket::localPort()
并关闭此 tcp 套接字
- 如果没有连接,你的端口是随机端口;
Qt 中是否有独立于平台的方法来获取未使用的 TCP 端口?我需要启动一个现有的应用程序,必须为其提供一个开放的 TCP 端口才能工作。
你是指某种 tcp 服务器吗?然后就是QTcpServerclass.
如果要启动现有服务器,则需要 QProcess class。示例:
QString program = "path/to/server";
QStringList arguments;
arguments << "-p" << "1234"; //or what ever you want
QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);
使用 QTcpServer 更简单。
bool QTcpServer::listen(const QHostAddress & address = QHostAddress::Any, quint16 port = 0)
如果port
为0,自动选择port
,然后使用quint16 QTcpServer::serverPort() const
获取"idle"端口
然后关闭你的 Tcp 服务器
或
生成一个随机端口,使用QTcpSocket
连接它(本地连接)
- 如果已连接,您的端口是
QTcpSocket::localPort()
并关闭此 tcp 套接字 - 如果没有连接,你的端口是随机端口;