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回答

bobby

2020-08-17

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在返回数据的时候指定一下内容的长度是多少 这样浏览器接收到指定长度的数据以后就不会等待了

0
2
bobby
回复
Sven1194218
没显示出来是什么样的?
2020-08-17
共2条回复

Python爬虫工程师实战 大数据时代必备

慕课网严选精品教程,高质量内容+服务!

2381 学习 · 1158 问题

查看课程