【发布时间】:2020-04-20 10:09:34
【问题描述】:
使用 PyQt4 和 Qt4.1,Python 3.7.2,最新的 PyInstaller
我有两个应用程序(c++ 和 python),它们通过 udp localhost、端口 2340 和端口 2341 进行通信) 在这两个应用程序上,我都用
绑定端口self.SocketIn.bind(QtNetwork.QHostAddress.LocalHost, 2340, QtNetwork.QUdpSocket.ReuseAddressHint)
self.SocketIn.readyRead.connect(lambda: print("Hallo")
和(在 c++ 方面)
SocketOut->bind(QHostAddress::LocalHost, 2340, QUdpSocket::ReuseAddressHint);
两个应用程序都返回 true,并且状态也是“4”,这意味着它们处于 BoundState。
现在的问题: 如果我首先启动它正在运行的 python 应用程序。 c++应用在2341端口接收消息,在2340端口发送消息。python应用在2340端口接收消息,在2341端口发送消息。 如果我先启动 c++ 应用程序,python 应用程序将不再触发端口 2340 上的 readyRead 信号。就像我说的所有boundStates都在那里(python应用程序,c++应用程序,->端口2340、2341)并且消息实际上是从c++应用程序发送的(在wireshark中看到)
这里的线索是什么?
编辑: 现在我意识到反过来也是同样的行为。 看来必须先初始化接收方才能工作!
【问题讨论】:
-
不确定我是否理解这里的问题。显示的代码同时具有绑定到端口 2340 的 python 和 c++ 示例。
-
对了,两者都必须绑定2340,否则python应用无法理解c++端的消息
-
来到这里希望能找到 MWE。请关闭它,因为对其他人无用
标签: qt pyqt qudpsocket