绑定Python解释器所做的每个连接的传出IP地址

时间:2011-05-21 11:58:26

标签: python c unix network-programming

我需要将一个用Python编写的简单脚本嵌入到我的C应用程序中。该脚本只是从Internet下载一些内容,解析它并将结果打印到stdout。我需要绑定脚本所做的每个连接的传出IP地址,以利用服务器提供的许多IP地址。我可以使用Python / C API或C system()/ execve()函数。我更喜欢不修改脚本本身,因为它使用的liburl2不支持直接绑定本地IP。

我会很感激每一个提示。

此致 Michal Pietras。

3 个答案:

答案 0 :(得分:1)

您的问题在这里得到解答:Source interface with Python and urllib2

答案 1 :(得分:0)

您可以使用以下软件包获取传出IP,

  

outgoingip

答案 2 :(得分:0)

在运行嵌入式代码之前,只需在解释器中执行here描述的字符串代码即可完成编辑python源代码的设置输出IP地址。像这样的东西会起作用:

#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;
}

当然,您可以使用正确的源IP地址替换 127.0.0.1