1.udp协议
定义:udp是用户数据报协议,是osi参考模型中一种无连接的传输层协议,提供简单不可靠信息传送服务
用途:用于不要求可靠性,不要求分组顺序,每一次传输少量数据的传输,力求快
2.udp通讯流程
它与对讲机非常类似:只管发送不管对方是否接收到 甚至不关心对方在不在。
买传呼机
固定对讲频道
(省了listen与accept)
收信号
发信号
买对讲及
(省了connect)
指定发送频率
发信息
收信息
它与tcp的区别:由于udp是不可靠传输,不需要建立连接,不会粘包,单次数据包不能太大
注:udp的socket得 手动指定
#================================================================= 客户端
from socket import *
client = socket(AF_INET,SOCK_DGRAM)
client.sendto("%Y-%m-%d".encode("utf-8"),("127.0.0.1",1688))
data,addr = client.recvfrom(1472)
print(data)
# =================================================================服务器
from socket import *
import time
server = socket(AF_INET,SOCK_DGRAM)
server.bind(("127.0.0.1",1688))
while True:
data,addr = server.recvfrom(1472)
res = time.strftime(data.decode("utf-8"),time.localtime())
server.sendto(res.encode("utf-8"),addr
#模拟聊天
===================================================================服务器 from socket import * server = socket(AF_INET,SOCK_DGRAM) server.bind(("192.168.13.93",1688)) clients = {} while True: try: data,addr = server.recvfrom(1472) if addr[0] not in clients: clients[addr[0]] = addr try: print("%s说:%s" % (addr[0],data.decode("utf-8"))) except: print("编码有问题啊 .....") # 遍历所有客户端 转发消息给他们 for k,v in clients.items(): server.sendto(data,v) except Exception as e: # print(e) pass
#=================================================================客户端1
from socket import * client = socket(AF_INET,SOCK_DGRAM) while True: # msg = input("msg:").strip() client.sendto("client2".encode("utf-8"),("127.0.0.1",1688)) data,addr = client.recvfrom(1472) print(data)
#=================================================================客户端2
from socket import * client = socket(AF_INET,SOCK_DGRAM) while True: # msg = input("msg:").strip() client.sendto("client1".encode("utf-8"),("192.168.13.93",1688)) data,addr = client.recvfrom(1472) print(data)
4.DNS服务器:
定义:是域名解析服务器,是cs结构中的server端, 本质是数据库,存储的是ip与域名的对应关系
用途:将域名转换为ip地址 要链接服务器,必须的知道ip
由来:由于单独的ip不方便记忆,所以我们把ip和域名绑定到一块
dns使用的是Udp协议, 因为传输的数据小, 但对速度要求高 一个dns服务器要服务很多计算机
5.多进程的概念
进程:指的是正在运行的程序,它来自于操作系统 没有操作系统就没有进程
操作系统:是一套软件,用于控制硬件,隐藏丑陋的硬件细节,然后将无序的硬件竞争变得有序
操作系统与普通软件的区别是操作系统受硬件保护,不能被用户修改,他是一个大型,长寿的程序:而普通软件你不用了可以自己写一个或换一个
多道技术:为了提高计算机的利用率,有了它可以同一时间处理多个任务
空间复用:把内存分割为不同区域,每个区域装入不同的程序
时间复用:当一个程序执行io操作时,可以切换另一个程序来执行,但是得保存切换前的状态 ,以便恢复执行。 一个进程占用cpu时间过长也会切换,或者说被操作系统夺走cpu的执行权限
注:并不是多道就一定提高了效率,eg如果多个任务都是纯计算,那么切换反而会降低效率只有遇到io操作时才能提高效率
原文:https://www.cnblogs.com/wyf20190411-/p/10951628.html