1.socket

  网络上任意两个程序之间要进行通信,需要依靠socket(端口)。socket封装了TCP/IP协议,让网络通信基于TCP/IP协议的形式实现。

  socket可以翻译为插座,那么一个服务器就拥有很多个“插座”,不同的“插座”可以实现不同的服务(应用程序)。在一台计算机上面,每个独立的应用程序

  (比如qq,微信,浏览器等)都占用着一个端口,不管是发出请求还是接收数据,都可以查看到IP和端口号。

2 socket编程的局限

  基于socket的网络编程,可以让我们实现在多个不同客户端服务端之间的通信,传输数据(请求request和响应response)

  但是网络上传输的数据千奇百怪,场景也非常多,因此很多时候需要对请求和响应的数据进行解析(比如通过对request进行解析,可以在请求头找到传输的协议,

  url等信息),这一部分非常麻烦并且具有高度重复性。这时候,才需要各种各样的web框架来辅助实现。

3 web框架(django)

  由于近来在学django,就只说这个了。

  django内部并没有socket,而是需要从socket那获取请求数据进行解析,然后再产出响应的数据字符串给到socket,socket再发回给客户端。

  django中,通过wsgi实现框架与Web服务器之间的连接。

  通过下图,更加形象地理解django框架的实现过程。

  

  

后续待补充......

socket+django的更多相关文章

  1. Django与socket

    Web框架本质是socket 各种socket一般都遵循wsgi协议 Django里面没有socket Django映射到Web框架,用了一个别人的socket:wsgiref 所以:django默认 ...

  2. 源码解析Django CBV的本质

    Django CBV模式的源码解析 通常来说,http请求的本质就是基于Socket Django的视图函数,可以基于FBV模式,也可以基于CBV模式. 基于FBV的模式就是在Django的路由映射表 ...

  3. day051 Django创建

    Django的下载安装 下载Django: pip3 install django==1.11.14 创建Django project(项目) 步骤1: 步骤2: 步骤3: 配置settings属性 ...

  4. python web框架 django wsgi 理论

    django wsgi python有个自带的wsgi模块 可以写自定义web框架 用wsgi在内部创建socket对象就可以了 自己只写处理函数就可以了django只是web框架 他也不负责写soc ...

  5. python web框架 django 工程 创建 目录介绍

    # 创建Django工程django-admin startproject [工程名称] 默认创建django 项目都会自带这些东西 django setting 配置文件 django可以配置缓存 ...

  6. python django框架(一)

    s4day63内容回顾: 1. 安装 2. 创建用户 + 授权 3. 连接 - 数据库 终端创建数据库(字符编码) - 数据表 终端 ORM pymysql create ...)engine=inn ...

  7. Django组件---Django请求生命周期和中间件

    Django组件---Django请求生命周期和中间件 Django请求生命周期 说明: client代表浏览器,浏览器的内部为我们封装了socket,Django的WSGI模块也为我们封装了sock ...

  8. Django 查漏补缺

    Django 查漏补缺 Django  内容回顾: 一. Http 请求本质: 网络传输,运用socket Django程序: socket 服务端 a. 服务端监听IP和端口 b. 浏览器发送请求 ...

  9. python web django base skill

    web框架本质 socket + 业务逻辑 框架实现socket tonado node.js 使用WSGI实现socket django flask 自己实现框架思路 wsgiref socket ...

随机推荐

  1. [How to] ROOT, Backup & Flash (MTKDroidTools, Spflashtool, CWM)

    这是一篇来自xda论坛的文章,写得很详细,很有用,以下是原文: Hi This is a guide to ROOT, backup and flash your MTK65xx or Other d ...

  2. Perl实战(一)

    在Perl中,我们可以通过uc,lc,\U,\L来修改变量的值.其中uc,\U可以将变量中的字母全部转换为大写. lc,\L可以将变量中的字母全部转换为小写. $big = "\U$var& ...

  3. Object-C-内存管理 对象生命周期

    autoreleasepool 池子被销毁的时候被标记 autorelease 的对象调用一次release Person *p2=[[[Person alloc]init]autorelease]; ...

  4. python 模拟windows键盘按键的封装

    代码:在执行的时候,把光标放在指定的地方,在此例中,点击运行后把光标放到结果区域,粘贴的时候是粘贴到光标所在的问题,如过是运行脚本在web元素输入框中输入的话,不能移动光标到其他位置 #encodin ...

  5. linux常见命令ps的应用

    ps(Process Status)命令是linux中最常见的命令之一,它用来列出当前系统运行中的进程的状态信息.当然了,它只显示命令执行时的进程状态,如果想要动态列出状态信息,可以选择使用top命令 ...

  6. AI+教育落地,百度大脑如何让校园更智能?

    人工智能作为影响社会底层技术革命逐渐向传统行业渗透,“AI+”已经替代“互联网+”成为创业创新的新引擎,出人意料的是,在AI在教育业的率先落地并且相当火爆. 现在,人工智能教育已成为从业者心目中的“教 ...

  7. 怎么归档老日志的shell脚本

    本脚本来自有学习阿铭的博文学习:工作中,需要用到日志切割logrotate,按照各自的需要切割.定义保留日志.提示:本文中的S全部都$符,不要问为什么,马云爸爸的社区就这样. #用途:日志切割归档.按 ...

  8. Docker容器和数据可视化管理工具Flocker

    Flocker 可轻松实现 Docker 容器及其数据的管理.这是一个数据卷管理器和多主机的 Docker 集群管理工具,你可以通过它来控制数据.可用来在 Docker 中运行你的数据库.查询和 K/ ...

  9. 基于qml创建最简单的android机图像采集程序

    前提是在已经搭建为android编写程序的qt平台上面,我们只需要简单几部就可以搭建最简单的android机图像采集程序 1.生成新的ququick app 2.在配置中添加 multimedia,因 ...

  10. C++ tinyXml直接解析XML字符串

    转载:http://www.cnblogs.com/1024Planet/p/4401929.html <?xml version=\"1.0\" encoding=\&qu ...