我还是网络编程/python的新手。 我想写一个python客户机代理服务器程序,其中客户机应该能够向代理发送文件内容,代理应该能够将其存储在一个文件中,如果需要的话,我应该能够在将文件转发到服务器之前更改文件的内容,并且在将响应发送回客户端之前,应该再次将响应存储在代理端。在
所有这些都是通过TCP连接,对于来自客户端的每个新请求,都会有一个新的TCP连接,但对于一个完整的周期(客户机->代理->服务器->代理->客户机),我需要一个持久的连接(我不知道如何实现这一点)。在
这是否可能,比如在转发到服务器之前,可以在代理服务器上修改/保存客户端的文件。 请给我指一下正确的方向。 任何帮助都将不胜感激。 感谢您的时间和宝贵的帮助/建议。在
敬上。在
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(以及其他语言)。在
我不太了解你在套接字编程方面的经验。如果您不了解套接字以及如何处理它,这将是一个很大的学习曲线(至少对我来说)。但我明确建议您检查twisted framework Python。http://twistedmatrix.com。我发现它有很好的记录,并且得到了很大的支持。你能做这么多的事情是很少的时间和很少的理解。在
相关问题 更多 >
编程相关推荐