我仍然是网络编程/ python的新手。 我想编写一个python客户端代理服务器程序,其中客户端应该能够将文件内容发送到代理,代理应该能够将其存储在文件中,如果需要,我应该能够更改文件的内容在将其转发到服务器之前,响应应该再次存储在代理端,然后再将其发送回客户端。
这一切都通过TCP连接和来自客户端的每个新请求新的TCP连接但是对于一个完整的周期(客户端 - >代理 - >服务器 - >代理 - >客户端)我需要持久连接(我不知道如何实现这一目标。)
这是否可行,就像在转发到服务器之前能够在代理服务器上更改/保存文件一样。 请指出正确的方向。 任何帮助将非常感激。 感谢您的时间和宝贵的帮助/建议。
问候。
答案 0 :(得分:3)
examples at Python documentation提供了实现客户端 - 服务器系统的基本背景。但是,在两者之间添加代理需要对示例代码进行一些应用。
客户应该做以下事情:
open()
,fp.read()
等。socket.socket()
,proxysock.connect()
SOCK_STREAM
proxysock.sendall()
proxysock.recv()
proxysock.close()
代理基本上既是服务器又是客户端,应该做以下事情:
socket.socket()
,proxyserversock.bind()
,proxyserversock.listen()
,proxyserversock.accept()
clientsock.recv()
open()
,fp.write()
等。socket.socket()
,serversock.connect()
再次使用SOCK_STREAM
serversock.sendall()
serversock.recv()
clientsock.sendall()
serversock.close()
,clientsock.close()
服务器应该执行以下操作:
socket.socket()
,serversock.bind()
,serversock.listen()
,serversock.accept()
proxyclientsock.recv()
open()
,fp.write()
等。proxyclientsock.sendall()
proxyclientsock.close()
实施上述基本模型后,您可以轻松开始添加更多功能。例如,您可以在步骤3和步骤4之间在代理中添加睡眠,而不是直接将从客户端接收的数据发送到服务器,您可以读取文件并发送内容 - 这样您就可以手动更改文件它被发送到服务器。
如果您想真正了解网络编程的基础知识,我建议您阅读Beej's Guide to Network Programming。这些示例在C中,但基本原则也适用于Python(以及其他语言)。
答案 1 :(得分:1)
我真的不知道你在套接字编程方面的经验。如果您对套接字没有了解以及如何处理它,那将是一个很大的学习曲线[对我来说至少]。但我绝对建议你检查扭曲的框架Python。 http://twistedmatrix.com。我发现它有很好的记录并且有很大的支持。你可以做很多事情,很少有时间理解。