即使在程序终止后,基本代理仍处理Web浏览器请求?

时间:2018-01-13 22:16:06

标签: python sockets networking proxy

所以我在大学的网络课上,作业的第一部分是编写一个浏览器可以简单连接的代理,附加/<url>,然后代理将返回浏览器要显示的网页内容。

因为它是一个类,我不想发布我的所有代码,(但如果请求,我很乐意发布一些代码。)

我的问题是:我在代理上创建了一个套接字来通过以下方式监听连接:

   browser_socket = socket(AF_INET, SOCK_STREAM)
   browser_socket.bind(('127.0.0.1', 10000)) #listen on local host with arbitrary port number.
   browser_socket.listen(1)

接受与127.0.0.1:10000/google.com的浏览器连接后,代理会将google的网页提供给浏览器(客户端)。我很确定这是正常的,因为在我运行程序之前,如果我尝试输入127.0.0.1:10000/google.com,它将无法提供网页,并且在运行程序时,导航到:{ {1}}确实为网页提供服务。

这是我的问题:在我终止应用程序后(关闭命令行并从Windows任务管理器中删除正在运行的python可执行文件),我现在可以始终连接到 127.0.0.1:10000/google.com,它作品!即使重新启动计算机后,我仍然可以通过这种方式访问​​网页!

我很好奇为什么会这样。如果我通过更改端口号来测试它,例如: 127.0.0.1:10000/< url >,它无法连接。但是,如果我将代理A 单次与端口运行到18890,如下所示:

127.0.0.1:18890/google.com

它显示相同的行为,如果我重新启动计算机,我现在可以使用browser_socket.bind(('127.0.0.1', 18890)) #listen on local host with arbitrary port number 127.0.0.1:10000/< url >连接!

这对我来说是一个谜。我很想学习并受到启发,有没有人有答案?会尝试使用:最后,还是确保我在程序结束时关闭端口会改变行为?

如果是这样,为什么即使在重新启动计算机后它仍会继续运行?

0 个答案:

没有答案