Django基础知识

服务器和客服端

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')

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容