如何查找并保留其他线程的可用端口?

时间:2011-03-15 20:24:38

标签: c++ multithreading qt sockets udp

我正在尝试构建两个通过UDP套接字进行通信的组件。组件1位于主线程中,组件2位于辅助线程中。该应用程序的多个副本可以同时在同一台机器上运行,因此我无法使用固定端口。该程序还需要在Windows和Linux上运行。

我一直试图通过绑定2个QUdpSockets来指定端口为0(要求Qt为我选择一个空闲端口)来做到这一点。然后我将第一个QUdpSocket和第二个套接字的参数传递给组件1,为它提供发送和接收所需的全部内容。对于组件2,我认为我不能跨越线程边界传递QUdpSocket,所以我只传递参数并在辅助线程中构造+绑定套接字。

但是,辅助线程中套接字的绑定失败。大概是因为主线程中的套接字已经绑定到同一个端口。

在构建任何一个对象之前,有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

  

我认为我不能跨越线程边界传递QUdpSocket

你可以这样做。只是不要同时在你的两个线程中使用它。