'''
高并发(同时有大量客户端访问服务器,服务器处理不过来)
OSI模型中,属于传输层得协议,仅用于不要求可靠性,以及不要求分组顺序且数据量较小的简单传输,力求快
通讯流程类似对讲机 只管发送不管对方是否接收到,甚至不关心对方存在
UDP可以处理多个客户端,但是并不是真正的同时处理,而是按顺序处理,速度非常快,感觉像是同时处理,这叫并发
并发:
并行:真正的同时运行,必须由多个执行单位
高并发(同时有大量客户端访问服务器,服务器处理不过来)
'''
DNS(域名解析服务器)
'''
将域名转换为ip的,DNS本质上就是一个数据库,里面存储了域名和ip的对应关系
DNS是C/S结构的server端
DNS 使用的是UDP 协议 因为 传输的数据小 但对速度要求高 一个DNS要服务很多计算机
域名:域名是一串有规律的字符串
www.baidu.com
.com 顶级域名
.baidu 二级域名
负载均衡服务器:
集群
'''
进程(一个正在运行的程序)
'''
进程来自于操作系统系统,没有操作系统就没有进程
操作系统:也是一套软件,主要功能控制硬件,隐藏复杂的硬件的细节,将无序的竞态变成有序
多进程
多道技术:
1.空间复用
2.时间复用
注意:并不是多道就一定提高了效率,如果多个任务都是纯计算,那么切换反而降低了效率
遇到I/O操作才应该进行切换,这样才能提高效率
'''
服务器
import socket
import time
#udp套接字
udpSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
udpSocket.bind(('127.0.0.1',1688))
# clients = {}
while True:
data,addr = udpSocket.recvfrom(1472)
# if addr[0] not in clients:
# clients[addr[0]] = addr
# for k,v in clients.items():
print(addr[0])
udpSocket.sendto(time.strftime(data.decode('utf-8')).encode('utf-8'),addr)
# udpSocket.close()d
# udpSocket.sendto(data.upper(),addr)
客户端
import socket
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# while True:
# str1 = input('输入')
# client.sendto(str1.encode('utf-8'),('127.0.0.1',1688))
# data,addr = client.recvfrom(1472)
# print(data)
while True:
msg = input("msg:").strip()
client.sendto(msg.encode("utf-8"),("127.0.0.1",1688))
data,addr = client.recvfrom(1472)
print(data,addr[0])