2016-04-22 14 views
0

Qtスクリプトを可能にするC++プログラムで外部のPythonスクリプトと通信しようとしています。その目標は、PythonコードからC++プログラム(そのqtscript API関数を使用して)を部分的に制御することです。QTScriptとPythonの間のソケット通信

私はPythonで、基本的なソケット・サーバ/クライアントを作成する方法を知っている:

#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" 

...

#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() 

しかし、私はqtscriptでそれを行う方法についての多くの情報を発見したことはできません(いいえjavascriptの経験)、私はQTcpSocket Classがあることを知っているが、私は本当に私が持っているpythonもののようなスニペットを取得するために始めるためにはわからない これはquestionですが、私にとって有用な手がかりではありません...これはsamplesですが、私はできませんそれは働く。

Pythonでクライアントまたはサーバーの方が優れていますか? qtscriptの例が見つかりますか?

ありがとうございました!

答えて

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

+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