'''
高并發(同時有大量客戶端訪問服務器,服務器處理不過來)
?
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])
?