Как организовать общение через сокеты Qt и Java
У меня есть программа на Qt. Она через создание нового процесса - QProcess создает процесс, в котором запускается программа на java. Идея запустить java и наладить общение через сокеты.
При этом в реальности получается так: я запускаю Qt.exe, создаю процесс java, пытаюсь подсоединиться к java программе по сокету, а она еще не запустилась, потому что Qt быстрее запускается. Поэтому происходит так, я пытаюсь в Qt соединиться с сокетом из java, а в этот момент сокет на java еще не создан и получается Qt не соединяется. Получается, что процесс взаимодействия не удается сделать последовательный.
Подскажите какие есть механизмы, чтобы сделать так чтобы Qt соединялся с java именно в тот момент когда java уже создалась и все проинициализировала и открыла сокет для соединения. Пока есть мысли сделать задержку потока в Qt на какое-то время, но я понимаю, что это в целом не решение проблемы. Подскажите как быть в такой ситуации.
Ответы (2 шт):
На Qt создаем и запускаем сервер (QTcpServer), а затем запускаем Java-приложение, создаем и запускаем в нем сокет-клиент (Socket) и долбимся на сервер. Сервер создан раньше и, соответственно, уже работает и ждет соединения от клиентов
Сокеты не очень надежная вещь.
Я бы порекомендовал посмотреть в сторону взаимодействия через шину dbus. В linux шина dbus родная вещь, а для windows есть порты демонов.
В вашем случае обе программы при запуске присоединятся к шине и смогут свободно обмениваться данными