# 内核态
# 用户态
# 操作系统的运行是在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. bzoj 1293: [SCOI2009]生日礼物 问题转化 + 性质分析 + 滚动数组优化

    Description 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可以没有彩珠,但多个彩 ...

  2. js和css引入文件消除缓存

    ?version=<?php echo filemtime('引用路径'); ?>

  3. 【XSY3350】svisor - 点分治+虚树dp

    题目来源:NOI2019模拟测试赛(九) 题意: 吐槽: 第一眼看到题觉得这不是震波的完全弱化版吗……然后开开心心的码了个点分治 码到一半突然发现看错题了……心态崩了于是就弃疗手玩提答去了 于是就快乐 ...

  4. Project Euler 16 Power digit sum( 大数乘法 )

    题意: 215 = 32768,而32768的各位数字之和是 3 + 2 + 7 + 6 + 8 = 26. 21000的各位数字之和是多少? 思路:大数乘法,计算 210 × 100 可加速计算,每 ...

  5. linux chattr用法

    在linux中,我们有的时候发现linux无法删除一个文件或者目录. huskiesir第一次遇见这个问题还是在一次服务器被不法分子入侵之后的事情,我就发现某个进程很多,根据进程的名字,我搜索关键字找 ...

  6. [剑指offer] 29. 顺时针打印矩阵 (for循环条件)

    思路: 先定义左上和右下角点坐标,打印可分为从左到右,从上到下,从右到左,从下到上.依次判断最后一圈的四个循环条件. #include "../stdafx.h" #include ...

  7. maven tomcat 热部署

    一.什么是热部署 就是在 tomcat 启动的时候进行部署 二.配置 tomcat 1.需要修改 tomcat 的 conf/tomcat-users.xml 配置文件.添加用户名.密码.权限. &l ...

  8. C#基础概念 代码样例

    C# int与string一起操作时注意 1 int a1= 1; 2 string a2= "2"; 3 Console.WriteLine(a1+a2); 4 Console. ...

  9. 从头认识java-13.5 利用泛型构建复杂模型

    这一章节我们来展示一下如何利用泛型构建复杂模型? 1.元组列表 我们之前已经说过元组是一个复杂的模型,能够返回多对象. package com.ray.ch11; import java.util.A ...

  10. memcached—向memcached中保存Java实体需注意的问题

    今天以代码实例的形式总结一下向memcached中保存Java实体需注意的问题: memcached工具类代码: package com.ghj.packageoftool; import java. ...