# 内核态
# 用户态
# 操作系统的运行是在BOIS启动盘读取代码,从硬盘读取到内存中,被操作系统的内核中,一直存在在内存中
# 计算机系统的三层结构:应用软件-->操作系统-->硬件
# 一般应用程序是放在用户态内存中,操作系统一般是放在内核态内存中。
# Socket套接字需要两台及以上物理机做交互的过程,就是需要用户态内存和内核态内存的交互,
# 发消息就是用户态内存1-->内核态内存1(缓存)-->物理介质1-->物理介质2-->内核态内存2(缓存)-->用户态内存2
# 当自己端的内核态缓存区无信息接收时,会卡在recv处,导致客户端和服务端都卡住
############################################################################################################
# 基于TCP的套接字
# 服务端格式
# import socket #导入socket模块
# Sever = socket() #实例化一个套接字对象,创建服务器套接字 Sever = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# Sever.bind() #绑定IP地址和端口号 Server.bind(ip_port)
# Sever.listen() #创建监听链接数 Server.listen(back_log) #半连接池,调试时还要测试
# inf_loop: #服务器内部的大循环
# cs = Sever.accept() #创建接收客户端链接数
# coom_loop: #通讯循环
# cs.recv() #对话接收
# ce.send() #对话发送
# cs.close() #关闭客户端套接字
# Sever.close() #关闭服务器端套接字
#——————————————————————————————————————————————————————#
# 客户端格式
# cs = socket() # 创建客户套接字
# cs.connect() # 尝试连接服务器
# comm_loop: # 通讯循环
# cs.send()/cs.recv() # 对话(发送/接收)
# cs.close() # 关闭客户套接字
#——————————————————————————————————————————————————————#
# 运维需要了解
# 发现系统存在大量TIME_WAIT状态的连接,通过调整linux内核参数解决,
# vi / etc / sysctl.conf
# 编辑文件,加入以下内容:
# net.ipv4.tcp_syncookies = 1
# net.ipv4.tcp_tw_reuse = 1
# net.ipv4.tcp_tw_recycle = 1
# net.ipv4.tcp_fin_timeout = 30
# 然后执行 / sbin / sysctl - p
# 让参数生效。
# net.ipv4.tcp_syncookies = 1
# 表示开启SYN
# Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
# net.ipv4.tcp_tw_reuse = 1
# 表示开启重用。允许将TIME - WAIT
# sockets重新用于新的TCP连接,默认为0,表示关闭;
# net.ipv4.tcp_tw_recycle = 1
# 表示开启TCP连接中TIME - WAIT
# sockets的快速回收,默认为0,表示关闭。
# net.ipv4.tcp_fin_timeout
# 修改系統默认的
# TIMEOUT
# 时间
# 转载自:http://www.cnblogs.com/linhaifeng/articles/6129246.html#_label7
#——————————————————————————————————————————————————————#
# 基于UDP的套接字
# udp服务端
# ss = socket() #创建一个服务器的套接字
# ss.bind() #绑定服务器套接字 [UDP不用listen]
# inf_loop: #服务器无限循环
# cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送)
# ss.close() # 关闭服务器套接字
#——————————————————————————————————————————————————————#
# udp客户端
# cs = socket() # 创建客户套接字
# comm_loop: # 通讯循环
# cs.sendto()/cs.recvfrom() # 对话(发送/接收)
# cs.close() # 关闭客户套接字
#——————————————————————————————————————————————————————#
# TCP和UDP接收时都是从缓存区拿,TCP的recv在自己这端的缓冲区为空时,阻塞;
# UDP的recvfrom在自己这端的缓冲区为空时,返回一个空值,UDP表面上可以接收空值
# UDP由于没有链接,所以可以实现并发的效果

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

  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. JTextArea+JScrollPane滚动条自动在最下边(转帖)

    这是我制作五子棋的过程中遇到的问题,在网上搜了好几种答案,分别列在下面了.不过感觉第一种相当方便.用得简洁,爽! 1. 利用JTextArea的selectAll();方法在添加信息之后强制将光标移动 ...

  2. 小松之LINUX 驱动学习笔记(一)

    本篇主要是讲解驱动开发的基础知识以及一些环境配置方面的问题. 下面是一个hello world的简单的模块代码,很简单./*********************** 模块的简单例子* author ...

  3. Python面向对象----封装

    1. Python语言不是强类型语言, 公有和私有体现的不是很明显.私有成员可以通过 对象._ClassName__私有成员进行访问 2. 使用封装借助了装饰器 其实具有类get和set等操作

  4. C#封装成DLL,并在C#中调用

    一.C#封装成DLL 1.在VS中创建项目选择类库,命名 myDll 2.建立好项目后自动生成的代码如下: 代码修改如下,添加自己要封装的C#代码,注意修饰符必须为public using Syste ...

  5. Elasticsearch 三种分页方式

    from + size 浅分页 "浅"分页可以理解为简单意义上的分页.它的原理很简单,就是查询前20条数据,然后截断前10条,只返回10-20的数据.这样其实白白浪费了前10条的查 ...

  6. net--技术栈(大图)

  7. rails的数据库查询方法

    rails的数据库查询方法 学习了:http://blog.csdn.net/menxu_work/article/details/8664962 学习了:http://www.cnblogs.com ...

  8. HDU 2732 Leapin' Lizards(拆点+最大流)

    HDU 2732 Leapin' Lizards 题目链接 题意:有一些蜥蜴在一个迷宫里面,有一个跳跃力表示能跳到多远的柱子,然后每根柱子最多被跳一定次数,求这些蜥蜴还有多少是不管怎样都逃不出来的. ...

  9. 杭电1018-Big Number(大数)

    Big Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  10. Android 中View的绘制机制源代码分析 二

    尊重原创:http://blog.csdn.net/yuanzeyao/article/details/46842891 本篇文章接着上篇文章的内容来继续讨论View的绘制机制,上篇文章中我们主要解说 ...