Pyhton学习——Day31
# 服务端和接收端的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的更多相关文章
- Pyhton学习——Day26
#多态:多态指的是一类事物有多种形态# import abc# class Animal(metaclass = abc.ABCMeta):# 同一类事物:动物# @abc.abstractclass ...
- pyhton 学习
官方学习文档 https://docs.python.org/3/tutorial/
- 20190320_head first pyhton学习笔记之构建发布
1.把代码nester.py放入文件夹nester中,在文件夹中再新建一个setup.py文件,文件内容如下: from distutils.core import setup setup( name ...
- Pyhton学习——Day2
Python开发IDE(工具)Pycharm.eclipse1.循环while 条件 #循环体 #条件为真则执行 #条件为假则执行break用于退出所有循环continue用于退出当前循环 2.Pyc ...
- Pyhton学习——Day28
#上下文协议:文件操作时使用with执行# with open('a.txt','w',encoding='utf-8') as f1:# with语句,为了让一个对象兼容with语句,必须在这个对象 ...
- Pyhton学习——Day27
# hasattr(obj,'name')-->obj.name# getattr(obj,'name',default = 'xxx')--->obj.name# setattr(obj ...
- Pyhton学习——Day25
#面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...
- Pyhton学习——Day24
# #面向对象设计:# def dog(name,gender,type):# def jiao(dog):# print('One Dog[%s],wfwfwf'%dog['name'])# def ...
- Pyhton学习——Day23
#re模块方法:findall search#findall:返回所有满足匹配条件的数值,放在列表里#search : #函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象 ...
随机推荐
- sublim Text3 配置python3环境
一.安装Sublime Text 3 1.双击下载的.exe文件安装,安装路径不要有中文目录 2.安装Sublime Text 3时,勾选“Add to explorer context menu”, ...
- 如何批量导入excel数据至数据库(MySql)--工具phpMyAdmin
之前由于数据储存使用excel保存了所有数据,经过初步数据筛选,数据量近4000条.一条一条录入数据库显然是不可行的.以下是我所操作的步骤: 1.只保留excel的数据部分,去除第一行的具体说明 2. ...
- IDEA热部署配置
一.IDEA热加载的作用: 热加载的作用就是当你保存修改,新增,删除代码或者文件后,不需要重新启动项目,直接就能运行. 二.IDEA热记载的配置方法 1.配置pom文件,加载依赖 Maven. < ...
- flex笔记 - 基础
flex笔记 - 基础 文章中的所有图示代码都放在了github上: 阮一峰flex博客跟学代码 传统的布局解决方案,基于盒模型, 依赖 display, position, float属性来进行布局 ...
- Project Euler 39 Integer right triangles( 素勾股数 )
题意:若三边长 { a , b , c } 均为整数的直角三角形周长为 p ,当 p = 120 时,恰好存在三个不同的解:{ 20 , 48 , 52 } , { 24 , 45 , 51 } , ...
- 洛谷 P1567 统计天数
题目背景 统计天数 题目描述 炎热的夏日,KC非常的不爽.他宁可忍受北极的寒冷,也不愿忍受厦门的夏天.最近,他开始研究天气的变化.他希望用研究的结果预测未来的天气. 经历千辛万苦,他收集了连续N(1& ...
- BZOJ 1835 [ZJOI2010]基站选址 (线段树优化DP)
题目大意:略 洛谷题面传送门 BZOJ题面传送门 注意题目的描述,是村庄在一个范围内去覆盖基站,而不是基站覆盖村庄,别理解错了 定义$f[i][k]$表示只考虑前i个村庄,一共建了$k$个基站,最后一 ...
- 手机QQ架构的浅谈
手机QQ的原本的产品定位定位于移动社交,并将娱乐与生活服务相结合,整体的架构模块QQ主要分为登录注册,消息,聊天,联系人,动态,侧边栏,设置等几大模块.其中消息模块和聊天模块是核心模块.好友动态及联系 ...
- linux_ubuntu 连接xftp
一.修改静态ip 打开网络配置文件 :vim /etc/network/interfaces 1.添加以下配置: 注意:ubuntu 网卡名为 ens33 .多数liunx系统的网卡名为eth0. 可 ...
- CentOS中防火墙相关的命令(CentOS7中演示)
CentOS中防火墙程序主要是firewall和iptables,CentOS7中firewall服务已经默认安装好了,而iptables服务需要自己用yum install iptabes-se ...