udp(用户数据包协议)
''' 高并发(同时有大量客户端访问服务器,服务器处理不过来) 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])