UDP協議網絡
UDP 是User Datagram Protocol的簡稱, 中文名是用戶數據報協議,是OSI(Open System Interconnection,開放式系統互聯) 參考模型中一種無鏈接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務,IETF RFC 768是UDP的正式規範。UDP在IP報文的協議號是17。UDP協議全稱是用戶數據報協議,在網絡中它與TCP協議同樣用於處理數據包,是一種無鏈接的協議。多線程
udp套接字簡單示例併發
udp服務端socket
import socket server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # SOCK_DGRAM基於UDP協議 server.bind(('127.0.0.1', 8765)) while True: data, client_addr = server.recvfrom(1024) print(data.decode('utf-8')) server.sendto(data.upper(), client_addr) server.close()
udp客戶端tcp
import socket client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#SOCK_DGRAM基於UDP協議 while True: msg = input(">>:").strip() client.sendto(msg.encode('utf-8'),('127.0.0.1',8765)) data,server_addr = client.recvfrom(1024) print(data.decode('utf-8'))
基於tcp的套接字,關鍵就是兩個循環,一個連接循環,一個通訊循環源碼分析
socketserver模塊中分爲兩大類:server類(解決連接問題)和request類(解決通訊問題)spa
server類:線程
request類:code
繼承關係:server
如下述代碼爲例,分析socketserver源碼:
ftpserver=socketserver.ThreadingTCPServer(('127.0.0.1',8080),FtpServer)
ftpserver.serve_forever()
查找屬性的順序:ThreadingTCPServer->ThreadingMixIn->TCPServer->BaseServer
源碼分析總結:
基於tcp的socketserver咱們本身定義的類中的
基於udp的socketserver咱們本身定義的類中的