2016-04-22 6 views
0

Я пытаюсь связать внешний скрипт python с программой на C++, которая позволяет qt-scripting. Цель состоит в том, чтобы частично управлять программой C++ (используя ее функции api qtscript) из кода на основе python.Сокеты связи между QTScript и Python

Я знаю, как создать основной сокет сервера/клиента в Python:

#Server code 

import socket 

server = socket.socket() 
server.bind (("localhost", 8080)) 
server.listen(10) 
client, client_adress = server.accept() 

while True: 
    message= cliente.recv(1024) 
    if message== "quit": 
     break 
    print "Received:", message 
    client.send(message) 

print "Goodby" 
cliente.close() 
server.close() 

...

#client code 

import socket 
client = socket.socket() 
client.connect(("localhost", 8080)) 

while True: 
    message = raw_input(">") 
    client.send(message) 
    if message == "quit": 
     break 

print "Goodby" 

Но я не могу нашел много информации о том, как сделать это в QtScript (Нет javascript-опыта), я знаю, что есть QTcpSocket Class, но я не совсем уверен, с чего начать получать snipet, как у python у меня есть Существует question, но не полезные подсказки для меня ... и там это samples, но я не могу m ake это работает.

Что лучше, клиент или сервер в Python? Могу ли я найти пример qtscript?

Спасибо, продвинутый!

ответ

0

Похоже, что у вас есть интерпретатор QtScript (Javascript), запущенный внутри вашей программы Qt C++. И вы хотите, чтобы клиент Python мог отправлять команды на него. Самый простой (но не самый безопасный!) Способ сделать это будет заключаться в том, чтобы клиент Python подключался либо к базовому TCP, либо к HTTP POST, отправлял исполняемую Javascript-программу и выполнял ее на C++.

Таким образом, сторона Python довольно тривиальна. Для стороны C++ вы должны сначала создать QTcpServer, а затем, когда он получит данные, прочитайте все это и передайте строку QScriptEngine::evaluate(). Как использовать QTcpServer, см. Здесь: http://doc.qt.io/qt-5/qtnetwork-fortuneserver-example.html

+0

Спасибо, Джон! Вы правы на цели, я начинаю испытывать некоторые вещи и построить прототип: https://github.com/hasielhassan/Python2QtScript-SocketServer/tree/master/code Но я борюсь с данными QByteArray введите и подтвердите отправку команд. Я думаю, что мне нужно преобразовать его в строку, но я счел его более сложным, как я ожидал, соответствующие строки следующие: https://github.com/hasielhassan/Python2QtScript-SocketServer/blob/master/code/SocketServer .js # L79 У вас есть ключи к тому, как это сделать? Есть ли другой способ проверить данные для соответствующей реакции? – hasielhassan

+0

@hasielhassan: Добро пожаловать. Я не уверен, что ты сейчас спрашиваешь. Если вы застряли, вам следует рассмотреть вопрос о публикации нового вопроса с этими деталями. –

+0

Привет, в конце я выясню способ получить значения QByteArray в строку, возможно, это не самое лучшее, но его работа ... https://github.com/hasielhassan/Python2QtScript-SocketServer/фиксация/8d9a18c8677769cb459ceb459d5bcc4e94155545 – hasielhassan