day32

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])
posted @ 2019-05-30 22:09  月薪20k  阅读(71)  评论(0编辑  收藏  举报