嵌入式Python源代碼的這部分工作。我是否需要研究子進程以使此Python源代碼在另一種編程語言中工作?
//Native Source Code [C - Like Language]
string zncauth = nick + ":" + password;
//Initializes Python for executing [Python Source Code]
PyInit();
//Python Source Code
PyExecute("import socket");
// Create Connetion
PyExecute("server_addr = '127.0.0.1'");
PyExecute("server_port = 6667");
PyExecute("s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)");
PyExecute("s.connect((server_addr, server_port))");
PyExecute("s.send(\'NICK botnick\\r\\n\')");
PyExecute("s.send(\'USER znc bot znc :znc\\r\\n\')");
PyExecute("s.send(\'PASS " + zncauth + " \\r\\n\')");
這就是問題所在。它在9分鐘後超時並與服務器斷開連接。我的猜測是while statement
運行一次。
// Ping Pong
PyExecute("while True:\'\\n\'");
PyExecute("data = s.recv(4096)");
PyExecute("if data.find(\"PING\") != -1:\'\\n\'");
PyExecute("s.send (\'PONG \' + data.split() [ 1 ] + \'\\r\\n\')");
PyExecute("if data.find (\'You need to send your password. Try /quote PASS <username>:<password>\') != -1:\'\\n\'");
PyExecute("s.send (\'PASS " + zncauth + " \\r\\n\')");
這是我試過的循環問題的最新版本。運行時,這個或以上版本的while循環沒有明顯的差異。
PyExecute("data = s.recv(4096)");
PyExecute("while data != 0:\'\\n\'");
PyExecute("if data.find(\"PING\") != -1:\'\\n\'");
PyExecute("if data == 0:\'\\n\'");
PyExecute("break");
這是上面相同的python代碼的可執行文件。它在irc網絡上停留數小時,但我需要通過它創建的連接發送消息。我需要找到一種通過這個可執行文件發送消息的方法,它將依次處理該消息或正確嵌入while statement
,以便它在本機代碼中工作。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
//Test.py
import socket
zncauth = 'nick:password'
server_addr = '127.0.0.1'
server_port = 6667
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((server_addr, server_port))
s.send('NICK botnick\r\n')
s.send('USER znc bot znc :znc\r\n')
s.send('PASS ' + zncauth + ' \r\n')
while True:
data = s.recv(4096)
if data.find ('PING') != -1:
s.send ('PONG ' + data.split() [ 1 ] + '\r\n')
if data.find ('You need to send your password. Try /quote PASS <username>:<password>') != -1:
s.send ('PASS ' + zncauth + ' \r\n')
我刪除從可執行對計算器可讀性縮進。但下次我會保留它。是的,'PyExecute'是Metatrader [MQL4]的集成包的一部分,這是本機代碼。我將努力完成循環,看看是否能解決這個問題。謝謝。 – user1337878
這沒有奏效。我嘗試了幾個版本。 – user1337878
我可能能夠使用'PyRun_SimpleString'找到一些支持。謝謝您的幫助。 – user1337878