1 UDP流程
前序:可以借助網絡調試助手工具進行使用
1 UDP 發送方
-
1 創建UDP套接字 2 准備目標(發送方) IP和端口 3 需要發送的數據內容 4 關閉套接字
from socket import * # 1 創建套接字 udp_socket = socket(AF_INET, SOCK_DGRAM) # 2 准備接收方地址 IP和端口 dest_addr = ('172.20.10.2', 8899) # 3 要發送的數據 send_data = input("請輸入你要發送的數據:") # 發送數據到指定的ip電腦上 udp_socket.sendto(send_data.encode('utf-8'), dest_addr) # 5 關閉套接字 udp_socket.close()
2 UDP接收方
-
1 創建udp套接字 2 綁定本地ip和端口 3 等待對方發送數據 4 關閉套接字
from socket import * # 1 創建套接字 udp_socket = socket(AF_INET, SOCK_DGRAM) # 2 綁定本地信息和端口 '' 會自動尋找本地ip local_addr = ('', 8899) # 綁定端口--> 這里綁定端口是因為端口會有變化 udp_socket.bind(local_addr) # 3 等待接收對方發送過來的數據 print("正在等待對方") recv_data = udp_socket.recvfrom(1024) # 表示接收1024個字節 # 4 顯示數據 --> 返回的是一個元祖 print("對方發送的數據:") print(recv_data[0].decode("gbk")) # 第一個返回的是數據 print(recv_data[1]) # 返回的是ip和端口 # 5 關閉套接字 udp_socket.close()
2 TCP流程
前序:tcp是面向連接、可靠傳輸的超文本傳輸控制協議 ,只有客戶端與服務器雙方通信之后,才能發送數據
1 TCP客戶端(發送方)
-
1 創建套接字 2 連接服務器 3 發送/接收服務器數據 4 關閉套接字
from socket import * # 1 創建TCP套接字 tcp_client_socket = socket(AF_INET, SOCK_STREAM) # 2 連接服務器 tcp_client_socket.connect(("172.20.10.2", 8080)) # 元祖(id, port) # 3 要發送的數據 send_data = input("請輸入要發送的數據:") # 4 向服務器發送數據 tcp_client_socket.send(send_data.encode("utf-8")) # 5 關閉套接字 tcp_client_socket.close()
2 TCP服務器(接收方)
-
1 創建TCP套接字 2 綁定本地ip和端口 3 開啟監聽模式(將主動連接套接字改為被動連接套接字) 4 等待客戶端連接 5 客戶端連接成功用套接字為其服務 6 先等待客戶端關閉連接,然后緊接着關閉服務器套接字
import socket # 1 創建套接字 server_s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2 綁定本地信息 server_s.bind(("", 8899)) # 3 將套接字設置為被動連接 server_s.listen(128) # 開啟監聽listen, 將服務器的主動連接設置為被動連接 # 4 等待客戶端的請求連接 print("等待客戶端連接") new_s, client_info = server_s.accept() print("客戶端已連接上服務器,當前客戶端的信息:", client_info) # 5 接收客服端的數據請求,向客服端發送數據 while True: # 接收客服端的數據請求 recv_content = new_s.recv(1024) print("客戶端發送的消息:") print("{}>>>>{}".format(str(client_info), recv_content.decode("gbk"))) # 如果沒有連接 if not recv_content: # 當客戶端調用了close后,recv 返回值就為空,此時服務器就可以關閉連接 new_s.close() break # 6 關閉監聽套接字 server_s.close()
3 TCP/UDP 總結和區別
UDP優缺點
- UDP是一種面向無連接的通信協議,UDP 數據包括目的端口號和信息內容
- 優點: 1 UDP傳輸速度快, 2 操作簡單,要求的系統資源較少 3 由於UDP通訊不需要連接,因此可以實現廣播發送
- 缺點: UDP由於傳送數據之前不需要與對方建立連接,對接收到的數據也不會發生確認信號,發送端也不確定數據的發送是否會正確接收,因此傳輸的數據不可靠
TCP優缺點
- TCP是面向連接的通訊協議,通訊雙方需要建立三次握手建立連接、通訊完成時通過四次握手關閉連接的一種通信協議
- 優點:TCP在數據傳遞時,有確認機制,窗口、超時重傳、阻塞等控制機制,能夠保證數據的正確性,可靠性。
- 缺點: TCP相對於UDP傳輸數據速度較慢,要求的系統資源要多。
文筆有限,如有遺漏請自行百度
2020.6.13
GuangHua