http_server诡异问题
来源:4-12 正确认识http协议 -2

Sven1194218
2020-08-17
import socket http_server = socket.socket() http_server.bind(("0.0.0.0" ,3000)) http_server.listen() sock, addr = http_server.accept() data = sock.recv(1024) print(data.decode('utf8')) welcome_page = '''HTTP/1.1 200 OK <html> <head> <title>Build a website!</title> </head> <body> Hello world, this is a very simple HTML docmemts. </body> </html> ''' sock.send(welcome_page.encode("utf8")) sock.close()
以上代码,浏览器chrome可以正确现实html内容,但把代码放进函数里,浏览器就一直连接不上。请教老师问题在哪
import socket import threading http_server = socket.socket() http_server.bind(("0.0.0.0",3000)) http_server.listen() def handle(sock,addr): while True: data = sock.recv(1024) welcome_page = '''HTTP/1.1 200 OK <html> <head> <title>Build a website!</title> </head> <body> Hello world, this is a very simple HTML docmemts. </body> </html> ''' sock.send(welcome_page.encode("utf8")) print(data.decode('utf8')) while True: sock, addr = http_server.accept() client_connect = threading.Thread(target=handle, args=(sock,addr)) client_connect.start()
写回答
1回答
-
import socket import threading http_server = socket.socket() http_server.bind(("0.0.0.0", 3000)) http_server.listen() def handle(sock, addr): while True: data = sock.recv(1024) welcome_page = '''HTTP/1.1 200 OK <html> <head> <title>Build a website!</title> </head> <body> Hello world, this is a very simple HTML docmemts. </body> </html> ''' sock.send(welcome_page.encode("utf8")) sock.close() print(data.decode('utf8')) while True: sock, addr = http_server.accept() client_connect = threading.Thread(target=handle, args=(sock, addr)) client_connect.start()
这样就行了。记得close一下socket 不然的话浏览器以为你没有将数据发送完会一直等着你继续发送完才会显示,或者你了解一下http协议的content-length在返回数据的时候指定一下内容的长度是多少 这样浏览器接收到指定长度的数据以后就不会等待了
022020-08-17
相似问题