QTScript和Python之间的套接字通信

时间:2016-04-22 04:01:04

标签: python qt sockets qtscript

我正在尝试使用允许qt脚本的C ++程序来传递外部python脚本。它的目标是从python代码部分控制C ++程序(使用其qtscript api函数)。

我知道如何在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像我有的蟒蛇 有这个question,但对我来说没有用的线索......而且有samples但是我无法使其发挥作用。

什么是更好的,Python中的客户端或服务器? 我可以找到一个qtscript示例吗?

先谢谢!

1 个答案:

答案 0 :(得分:0)

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

这样Python方面就非常简单了。对于C ++方面,您首先创建一个QTcpServer,然后在接收数据时,读取所有数据并将字符串传递给QScriptEngine::evaluate()。有关如何使用QTcpServer的信息,请参阅此处:http://doc.qt.io/qt-5/qtnetwork-fortuneserver-example.html