这部分嵌入式 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循环问题的最新版本。当它运行时,这个或上面版本的 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')