所以我在大学的网络课上,作业的第一部分是编写一个浏览器可以简单连接的代理,附加/<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 >
,和连接!
这对我来说是一个谜。我很想学习并受到启发,有没有人有答案?会尝试使用:最后,还是确保我在程序结束时关闭端口会改变行为?
如果是这样,为什么即使在重新启动计算机后它仍会继续运行?