1

使用 python 2.7.x 通过 HTTP 建立模拟 TCP 连接的最简单方法是什么?

服务器:pythonanywhere(或一些类似的)免费托管上的 python 程序,不提供专用 IP。客户端:Windows PC 上的 python 程序。

连接是通过 multiprocessing.BaseManager 建立的,并且在同一台机器上测试服务器和客户端时工作正常。

有没有办法在 HTTP 上通过最少的代码添加来完成这项工作?

PS我需要这个用于网格计算项目。PPS 我是 python & network & web 编程的新手,几天前开始学习它。

找到这个:http ://code.activestate.com/recipes/577643-transparent-http-tunnel-for-python-sockets-to-be-u/ 。似乎正是我需要的,虽然我不明白如何在服务器/客户端调用 setup_http_proxy() 。两边都试过 setup_http_proxy("my.proxy", 8080) ,但是没用。

还发现了这个:http ://docs.python.org/2/library/httplib.html 。HTTPConnection.set_tunnel 方法实际上是做什么的?我可以用它来解决问题吗?

4

1 回答 1

2

客户端使用:

setup_http_proxy("THE_ADRESS", THE_PORT_NUMBER) # address of the Proxy, port the Proxy is listening on 

该代码包装套接字以对代理设置执行初始 HTTP CONNECT 请求,以获取 HTTP 代理来为您代理 TCP 连接,但为此您需要一个兼容的代理(大多数情况下不允许您打开 TCP 连接,除非它是对于 HTTPS)。HTTPConnection.set_tunnel 基本上做同样的事情。

对于您的用例,在免费托管上运行的程序,这将不起作用。您的免费主机可能只允许您处理 http 请求,而不是长时间运行的进程侦听 tcp 连接(代码假定)。您应该重新考虑您需要隧道和组织您的通信以发布数据(并轮询来自服务器的消息,除非它们是您发布的内容的答案)。或者,您可以购买 VPS 主机,让您更好地控制可以远程托管的内容。

于 2013-05-25T09:50:35.383 回答