为Python解释器的每个连接绑定输出IP地址
我需要把一个用Python写的简单脚本嵌入到我的C程序里。这个脚本的功能很简单,就是从网上下载一些内容,解析这些内容,然后把结果打印到标准输出上。我需要把脚本每次连接时使用的外部IP地址绑定起来,这样就能利用服务器提供的多个IP地址。我可以使用Python/C的接口或者C语言的system()/execve()函数。我更倾向于不修改脚本本身,因为它使用的liburl2库不支持直接绑定本地IP。
如果有任何建议,我将非常感激。
祝好,
Michal Pietras。
2 个回答
0
你可以通过在运行嵌入的代码之前,在解释器中执行一段代码来设置发出的IP地址,而不需要修改Python的源代码。你可以参考这里的内容。像下面这样就可以:
#include <Python.h>
int main(int argc, char *argv[]) {
Py_SetProgramName(argv[0]);
Py_Initialize();
PyRun_SimpleString
("import socket\n"
"true_socket = socket.socket\n"
"def bound_socket(*a, **k):\n"
" sock = true_socket(*a, **k)\n"
" sock.bind((127.0.0.1, 0))\n"
" return sock\n"
"socket.socket = bound_socket\n");
// Run embedded code here
Py_Finalize();
return 0;
}
当然,你需要把127.0.0.1替换成正确的源IP地址。
1
你的问题在这里得到了回答:使用Python和urllib2的源接口