python-3.x - 通过http服务器显示html-但是127.0.0.0.1:8008无法连接
问题描述
当我想通过简单的http服务器显示html,但是127.0.0.1:8008无法连接
python3.7和Pycharm
import socket
import threading
server = socket.socket()
server.bind(("127.0.0.1",8008))
server.listen()
def handle_sock(sock,addr):
while True:
tmp_data = sock.recv(1024)
print(tmp_data.decode("utf8"))
response_template = '''HTTP/1.1 200 OK
<html>
<head>
<title>Build A Web Server</title>
</head>
<body>
Hello World!
</body>
</html>
'''
sock.send(response_template.encode("utf8"))
while True:
sock, addr = server.accept()
client_thread = threading.Thread(target = handle_sock, args=(sock,addr))
client_thread.start()
'''
console in pycharm:
GET / HTTP/1.1
Host: 127.0.0.1:8008
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
'''
我希望 html 代码可以在 chrome 中显示,但页面没有响应
解决方案
稍微改变一下handle_sock
,页面现在在 Chrome 中完成加载。注意sock.shutdown(socket.SHUT_RDWR)
通话。哦,我删除了while True
位。
def handle_sock(sock,addr):
tmp_data = sock.recv(4096)
print(tmp_data.decode("utf8"))
response_template = '''HTTP/1.1 200 OK
<html>
<head>
<title>Build A Web Server</title>
</head>
<body>
Hello World!
</body>
</html>
'''
sock.send(response_template.encode("utf8"))
sock.shutdown(socket.SHUT_RDWR)
推荐阅读
- css - v-btn 在鼠标悬停/悬停时闪烁/闪烁
- java - Scala 使用 intellijidea 在 Java 11 上构建错误
- android - 无法使用 RecyclerView 的 onClickeListener 为简单的单例分配新值
- java - 单击listview上的项目以获取片段后如何刷新数据
- java - Java 选项计数器
- c# - 如何在 ZK4500 指纹扫描仪中将手指数据保存到数据库并使用 c# 匹配手指?
- sql-server - 与另一个表的日期列相比,根据其日期列更新表
- ruby-on-rails - 实施acts_as_commentable时出错:未初始化的常量 Discussion::Comment
- node.js - Azure AD B2C (NodeJS):使用有效令牌的请求出现未经授权的 401 错误
- java - 无法从本地系统帐户检索进程信息