Pyhton学习——Day30
# 内核态
# 用户态
# 操作系统的运行是在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的更多相关文章
- 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 : #函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象 ...
随机推荐
- Linux 命令查询系统负载信息
linux uptime命令主要用于获取主机运行时间和查询linux系统负载等信息.uptime命令过去只显示系统运行多久.现在,可以显示系统已经运行了多长 时间,信息显示依次为:现在时间.系统已经运 ...
- jmeter图片的上传
首先添加一个线程组,然后在线程组里面添加一个http请求,因为是发送数据,所有是post请求,写好上传的地址,然后写好文件路径 1.添加线程组 :右键测试计划,添加-Threads(Users)-线程 ...
- 网络教程(10)回顾ARP和ping数据包
Ping 192.168.20.2 ICMP Echo (Internet Control Message Protocol ICMP Echo request ICMP Echo reply 收到I ...
- 训练1-T
一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数.求所有小于等于N的与7无关的正整数的平方和. 例如:N = 8,<= 8与7无关的数包括:1 2 ...
- 使用Flask_SQLAlchemy连接多个数据库
#!/usr/bin/env python #-*- coding: utf-8 -*- from flask import Flask from flask_sqlalchemy import SQ ...
- Centos6.5安装Seafile,遇到的问题处理记录。
问题1:启动Seafile安装脚本时,提示找不到MySQL-python模块,使用yum安装成功也提示未安装该软件包 问题1解决方法:需要通过 python 的工具pip来安装MySQL-python ...
- 2019-03-29 Vagrant Docker Toolbox 下载安装
1.无脑安装Vagrant Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境.它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境. http ...
- [jQuery]ajax同步请求在方法内问题
在函数内写$.ajax() 的成功函数中return 的值,并没有return到外层方法返回至
- (译)RabbitMQ ——“Hello World”
原文地址:http://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html 介绍 RabbitMQ是一个消息实体服务(broker):它接收及转发消 ...
- 多线程的join和interrupt
你可以在一个线程1里添加线程2对象thread的join方法来让线程1处于等待的状态 ,同时也可以调用thread.interrupt()来打断等待状态,此处注意 interrupt应在线程1开启st ...