美文网首页
Django基础知识

Django基础知识

作者: 大地瓜_ | 来源:发表于2019-01-24 20:53 被阅读0次

服务器和客服端

C-S模型启动相应过程

用户的浏览器(socket客户端)
      3、客户端往服务端发消息
     
      6. 客户端接收消息

服务器(socket服务端)
      1、启动、监听端口
      2、等待客户端连接

      4. 服务端收消息
      5. 服务端回消息
      7. 关闭

由于浏览器部分不用我们完成,所以我们主要完成服务器部分代码(python实现服务器代码)

# encoding: utf-8
import socket
# 创建 scoket 对象
sk = socket.socket()
# 绑定ip和端口
sk.bind(("127.0.0.1",8000))
# 监听
sk.listen(10)

# 写一个死循环,一直等待客户端来连我
while 1:
    # 获取与客户端的连接
    conn , _ = sk.accept()
    # 接收客户端发来消息
    data = conn.recv(8096)
    # 给客户端回复消息
    conn.send(b'qnmd')

conn.close()
sk.close()

但是在浏览器中输入 127.0.0.1:8000 访问错误
加入print data,在终端的输出

GET / HTTP/1.1
Host: 127.0.0.1:8000
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: csrftoken=IRpdhcu9JL6A9Qdm4Zz007ndWLfipXjbffLoXeW0mtpuCIyG7UVHYq0iFhFG2dMe

主要原因:浏览器和服务端通信都要遵循一个HTTP协议(消息的格式要求)


所以HTTP协议主要内容为:

1. 浏览器往服务端发的叫 请求(request)
    请求的消息格式:
    请求方法 路径 HTTP/1.1\r\n
                 k1:v1\r\n
                    k2:v2\r\n
                \r\n
                请求数据
2. 服务端往浏览器发的叫 响应(response)
    响应的消息格式:
    HTTP/1.1 状态码 状态描述符\r\n
               k1:v1\r\n
               k2:v2\r\n
               \r\n
               响应正文   <-- html的内容

为了遵循HTTP协议,我们在头部加入

# 给客户端回复消息
 conn.send(b'http/1.1 200 ok\r\n\r\n')

就可以在页面打印数据了!

相关文章

网友评论

      本文标题:Django基础知识

      本文链接:https://www.haomeiwen.com/subject/thcejqtx.html