QTScript 和 Python 之间的套接字通信

Sockets comunication between QTScript and Python

我正在尝试将外部 python 脚本与允许 qt 脚本的 C++ 程序进行通信。其目标是从 python 代码部分控制 C++ 程序(使用其 qtscript api 函数)。

我知道如何在 python 中创建基本套接字 server/client:

#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,但我不确定在哪里开始获取像我拥有的​​ python 那样的代码片段。 有这个 question, but it was not useful to my problem. And there is this samples 但我无法让它工作。

Python 中的客户端或服务器哪个更好? 我能找到一个 qtscript 示例吗?

听起来您的 Qt C++ 程序中有一个 QtScript (Javascript) 解释器 运行。并且您希望 Python 客户端能够向其发送命令。最简单(但不是最安全!)的方法是让 Python 客户端使用基本 TCP 或 HTTP POST 连接,发送一个可执行的 Javascript 程序,并让 C++ 程序在内部执行它。

这样 Python 方面就很简单了。对于 C++ 端,您首先创建一个 QTcpServer,然后当它接收到数据时,读取所有数据并将字符串传递给 QScriptEngine::evaluate(). For how to use QTcpServer, see here: http://doc.qt.io/qt-5/qtnetwork-fortuneserver-example.html