Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何限制QTcpServer用于侦听的端口范围?_C++_Qt - Fatal编程技术网

C++ 如何限制QTcpServer用于侦听的端口范围?

C++ 如何限制QTcpServer用于侦听的端口范围?,c++,qt,C++,Qt,我有一个应用程序,它使用QTcpServer侦听传入的连接。实际上有多个进程同时运行,所以我只需执行以下操作: QTcpServer *server = new QTcpServer; server->listen(QHostAddress::Any, 0); 如果成功,我只需询问服务器正在侦听的端口。由于端口是自动选择的,现在我需要限制它的范围。例如,我希望它自动选择25000到26000之间的端口。有没有一个好方法可以做到这一点,或者我应该继续尝试收听范围内的任何端口,直到我成功地不

我有一个应用程序,它使用QTcpServer侦听传入的连接。实际上有多个进程同时运行,所以我只需执行以下操作:

QTcpServer *server = new QTcpServer;
server->listen(QHostAddress::Any, 0);
如果成功,我只需询问服务器正在侦听的端口。由于端口是自动选择的,现在我需要限制它的范围。例如,我希望它自动选择25000到26000之间的端口。有没有一个好方法可以做到这一点,或者我应该继续尝试收听范围内的任何端口,直到我成功地不断更改端口?这是一个解决方案,但却是一个残酷的解决方案。所以,如果有更好的方法,我真的很想知道


谢谢

如果您收听端口0,它与临时端口相同。因此,它将选择一个范围内的“随机”端口,该范围因操作系统而异。如果要选择25000到26000之间的端口,请在该范围内生成一个随机数。您如何与将要连接的客户端协调端口号?查找的负担通常由正在连接的客户机承担,但也有其他方案,很像常规FTP(被动模式与主动模式)。与客户机的端口号协调由与所讨论的进程通信的其他进程完成。所以,这不是问题。我只是想知道是否有更优雅的解决方案来解决这个问题,或者我错过了一些api。我对你的问题感到困惑,“我是否应该继续尝试收听范围内的任何端口?”。听(我想你的意思是连接)到所有端口,就像你说的,用蛮力的方式,听起来很疯狂-所以也许我错过了什么,这就是为什么我问服务器和客户端之间端口的协调。商定一个端口可以避免在已知范围内(如25k-26k)尝试所有端口连接。