# 服务端和接收端的send和reve没有任何关系,只与协议之间有关系
# 应用程序产生的数据一定会交给操作系统,并由操作系统往外发送
# 发送端什么时候会清空自己的内存?
# 收到接收端的ACK响应以后才会清除自己的缓存
# 粘包的本质在于接收端在缓存接收,不知道从缓存区接收多少
# 粘包的两种情况:1.发送间隔短,数据量小;2.接收数据量过大
# 接收和发送数据一次不要超过8k(8096个字节),否则会失真
# socket的sendall方法,MTU值最多能发送1500Bytes,就是说发送数据大时,按照分段发出再重新组合,分段越大,再组合就越复杂
# 重新组合后接收的数据丢失的可能性就越大
# 解决粘包的思路:在发包之前告诉接收端发出的数据大小
# 解决无法用socket实现并发,需要使用socket server实现并发
# 多线程服务端,可以实现并发,可以同时开启多个任务等待链接,ThreadingTCPServer(tuple格式的(ip+prot),类名)
#详细代码请见Socket_Server_31 Socket_Client_31 Socket_Client_31_1
# socketserver模块介绍
# BaseServer是socket模块内部定义的一个类
# server类:处理链接
# GrandPa Dad Son
# | | |
# BaseServer<--TCPServer---<UDPServer
# BaseServer
# TCPServer
# UDPServer
# UnixStreamServer
# UnixDatagramServer
#######################################################################################################
# request类:处理通信
# BaseRequestHandler
# StreamRuquestHandler 流式传输处理方法
# DatagramRuquestHandler 数据报传输方法
# ForkingMixIn
# Forking:进程,与并发有关,ForkingServer多进程的开销高于多线程
# Threading:线程,与并发有关,
# 对于TCP来说self.ruquest接收到的是coon,
# 对于UDP来说self.request接收到的就是实际的消息

Pyhton学习——Day31的更多相关文章

  1. Pyhton学习——Day26

    #多态:多态指的是一类事物有多种形态# import abc# class Animal(metaclass = abc.ABCMeta):# 同一类事物:动物# @abc.abstractclass ...

  2. pyhton 学习

    官方学习文档 https://docs.python.org/3/tutorial/

  3. 20190320_head first pyhton学习笔记之构建发布

    1.把代码nester.py放入文件夹nester中,在文件夹中再新建一个setup.py文件,文件内容如下: from distutils.core import setup setup( name ...

  4. Pyhton学习——Day2

    Python开发IDE(工具)Pycharm.eclipse1.循环while 条件 #循环体 #条件为真则执行 #条件为假则执行break用于退出所有循环continue用于退出当前循环 2.Pyc ...

  5. Pyhton学习——Day28

    #上下文协议:文件操作时使用with执行# with open('a.txt','w',encoding='utf-8') as f1:# with语句,为了让一个对象兼容with语句,必须在这个对象 ...

  6. Pyhton学习——Day27

    # hasattr(obj,'name')-->obj.name# getattr(obj,'name',default = 'xxx')--->obj.name# setattr(obj ...

  7. Pyhton学习——Day25

    #面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...

  8. Pyhton学习——Day24

    # #面向对象设计:# def dog(name,gender,type):# def jiao(dog):# print('One Dog[%s],wfwfwf'%dog['name'])# def ...

  9. Pyhton学习——Day23

    #re模块方法:findall search#findall:返回所有满足匹配条件的数值,放在列表里#search : #函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象 ...

随机推荐

  1. poj 3669 bfs(这道题隐藏着一个大坑)

    题意 在x,y坐标系,有流星会落下来,给出每颗流星落下来的坐标和时间,问你能否从(0,0)这个点到一个安全的位置.所谓的安全位置就是不会有流星落下的位置. 题解: 广搜,但是这里有一个深坑,就是搜索的 ...

  2. 【disconf】环境搭建【linux】

     1.搭建disconf需要安装的配置. 安装Linux:CentOS7     安装Zookeeper:zookeeper-3.4.6     安装Redis:redis-3.0.0     安装N ...

  3. Iterator和for...of

    Iterator和for...of 什么是Iterator ES6中的Map 和 Set ,再加上之前的数组和对象,这样就有了四种数据集合,用户可以组合使用它们,定义自己的数据结构.这时,我们就需要一 ...

  4. php程序员需要撑握的知识点

    1. 基本知识点 HTTP协议中几个状态码的含义:1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码   说明 100   (继续) 请求者应当继续提出请求. 服务器返回此代码 ...

  5. MAVEN的结构认识篇

    1.maven的结构认识 src main com imooc calss test com imooc test resources pom.xml 以上是maven项目存在的必须结构!如下图 te ...

  6. 01.Python基础-5.函数

    1 函数的介绍 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 内置函数 自定义函数 2 函数的定义和调用 2.1 函数的定义和调用 定义 def 函数名([参数]): 代码块 [ ...

  7. 可执行程序无法在Linux上运行,显示line 1: syntax error: word unexpected (expecting ") .

    [问题]用arm-linux-gcc编译出来的可执行文件clkCtl,下载到板子上,在Linux下不能运行:./clkCtl: line 1: syntax error: word unexpecte ...

  8. 洛谷 1119 灾后重建 Floyd

    比较有趣的Floyd,刚开始还真没看出来....(下午脑子不太清醒) 先考虑一下Floyd本身的实现原理, for(k=1;k<=n;k++) for(i=1;i<=n;i++) for( ...

  9. jquery-ajax基础-XMLHttpRequest

    XMLHttpRequest知识点 原生的ajax代码 var xmlhttp; // 声明一个对象 if (window.XMLHttpRequest) {// code for IE7+, Fir ...

  10. BA-siemens-apogee总线不稳定解决方法

    状况一:BLN下的火车头在线,但是下面的模块(包括UEC或者PPM)全部掉线 尝试方法: 使用挨个DDC箱断线的方法测试总线是否上线(可以解决由于总线短路引起的总线故障,施工中总线压冷压端子的话就不容 ...