Использование PyQt4 и Qt4.1, Python 3.7.2, последняя версия PyInstaller
У меня есть два приложения (c ++ и python), которые взаимодействуют через локальный хост udp, порт 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 не вызовет readyRead сигнал на порт 2340 больше. Как я уже говорил, есть все boundStates (python app, приложение c ++, -> порты 2340, 2341), и сообщения действительно отправляются из приложения c ++ (видно из wireshark)
В чем здесь ключ?
РЕДАКТИРОВАТЬ: Теперь я понял, что наоборот это то же самое поведение. Кажется, что принимающая сторона должна быть сначала инициализирована, чтобы работать!