Django企业开发实战--by胡阳,学习记录1117

2.2.2 简单的Web协议

1、原文中的“text/plain”已经改成了“text/html”,但实际重新运行的时候,浏览器依旧不会解析html文件,而是在console中返回html字符串,这点不是很清楚为什么会这样。

P16 源代码展示如下

# coding:utf-8

import socket

EOL1 = b'\n\n'
EOL2 = b'\n\r\n'
body = '''Hello,world! 

from the5fire 《Django 企业开发实战》

''' response_params = [ 'HTTP/1.0 200 OK', 'Date: Sun, 27 may 2018 01:01:01 GTM', 'Content-Type: text/html; charset=uft-8', 'Content-Length: {}\r\n'.format(len(body.encode())), body, ] response = 'r\n'.join(response_params) def handle_connection(conn,addr): request = b"" while EOL1 not in request and EOL2 not in request: request += conn.recv(1024) print(request) conn.send(response.encode()) #response转为bytes后传输\ conn.close() def main(): #socket.AF_INET用于服务器与服务器之间的网络通信 #socket.SOCK_STREAM用于基于TCP的流失socket通信 serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #设置端口可复用,保证每次我们按ctrl+c后可以快速重启 serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) serversocket.bind(('127.0.0.1', 8000)) serversocket.listen(5) #设置backlog-socket连接最大排队数量 print('http://127.0.0.1:8400') try: while True: conn, address = serversocket.accept() handle_connection(conn, address) finally: serversocket.close() if __name__ == '__main__': main()

图片如下
Django企业开发实战--by胡阳,学习记录1117_第1张图片

你可能感兴趣的:(Django)