Python8期 Day33 2019/ 5/30

基于UDP的socket

1.UDP 通讯流程

2.通讯流程类似对讲机 只管发送不管对方是否接受到 甚至不关心对方在不在
 1.买对讲机
 2.固定频道
 3.收发数据

 1.买个对讲机
 2.指定发送的频道
 3.收发数据

3.什么是udp:指的是是用户数据包协议,属于传输层协议不要求可靠性,不要求分组顺序且传输的数据量较小,追求传输速度快。

4.与TCP区别:

不可靠传输
不需要建立连接
不会粘包
单次数据包不能太大
由于不需要建立 连接所以省去 TCP的listen()和accept()这两步

5.具体代码语法:

客户端:

不需要建立连接
收数据 recvfrom(缓冲区大小)
发数据 sendto(数据,地址)
import socket
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# UDP 不需要建立链接

# 发送数据时 要指定接受方地址
client.sendto("hello".encode("utf-8"),("127.0.0.1",1688))

data,addr = client.recvfrom(1024)
print("收到来自%s的消息 : %s" % (addr,data))


client.close()
服务器端
服务器不需要监听 listen
不需要接收请求 accept
收数据 recvfrom(缓冲区大小)
发数据 sendto(数据,地址)
from socket import *

# 创建基于UDP的scoket 必须手动指定
server = socket(AF_INET,SOCK_DGRAM)

server.bind(("127.0.0.1",1688))

while True:
data,addr = server.recvfrom(1024)
print("收到来自%s的消息 : %s" % (addr,data))
server.sendto(data.upper(),addr)

# server.close()
# UDP 可以处理多个客户端 但是并不是真正的同时处理 而是按顺序处理 速度非常快  感觉像是同时处理  叫并发
# 并行 真正同时处理 想要真正的同时运行 必须由多个执行单位
 

DNS

1.什么是DNS:DNS Domain Name System 全称 :域名解析服务器

2.作用:将域名转化为IP地址 (要链接服务器必须知道他的IP地址)

3.注意:DNS使用的是UDP协议因为传输的数据小,速度高,DNS本质是一个数据库,里面存储了域名和IP的对应关系

4.例:

http://     news.cctv.com    /2019/05/29/ARTIXRqlqFBp59eECweiXTUU190529.shtml
协议名称 域名 文件路径
news.cctv.com
.com 顶级域名
cctv 二级域名
news 三级域名

进程

1.什么是进程:正在运行的程序,来自于操作系统,没有操作系统就没有进程

2.操作系统

    1.操作系统本质上也是一个软件,只是他比较特殊

     2.主要功能:控制硬件,隐藏复杂的硬件细节;将无序的硬件变得有序

3.问题:早些年 计算机同一时间只能运行一个程序,这时候是不可能并发的要并发 当然需要不同的应用程序 ,如何使多个应用程序同时被运行
  这就需要多道技术来支持

多道技术

1.what:使多个计算机同一时间处理运行多个任务程序,从而提高计算机的利用率

2.多道技术的2个重要机制:

  1.空间复用:把内存分割为不同的区域,每个区域装入不同的程序。(注意:当内存中有多个程序时,必须要保证数据的安全性,所以各区域间要进行物理隔离)

   2.时间复用:当一个区域的程序执行到IO操作时,就会切换到另一个区域的程序来执行。(注意:在切换前必须保存当前的状态以便后续的操作执行不会出错)

3.注意:

           1.多道技术不是一定就会提高效率

            2.如果多个任务都是纯计算,那么切换反而会降低xiaolv

            3.多道技术只有在区域的程序运行到IO操作时才会进行切换

 
 



 

猜你喜欢

转载自www.cnblogs.com/tfzz/p/10951668.html
今日推荐