【Python】udp網路程式-傳送、接受資料
阿新 • • 發佈:2019-02-01
udp網路程式-傳送、接收資料
1. udp網路程式-傳送資料
建立一個基於udp的網路程式流程很簡單,具體步驟如下:
- 建立客戶端套接字
- 傳送/接收資料
- 關閉套接字
與發簡訊類似。
程式碼如下:
#coding=utf-8
from socket import *
# 1. 建立udp套接字
udp_socket = socket(AF_INET, SOCK_DGRAM)
# 2. 準備接收方的地址
# '192.168.1.103'表示目的ip地址
# 8080表示目的埠
dest_addr = ('192.168.1.103', 8080) # 注意 是元組,ip是字串,埠是數字
# 3. 從鍵盤獲取資料
send_data = input("請輸入要傳送的資料:")
# 4. 傳送資料到指定的電腦上的指定程式中
udp_socket.sendto(send_data.encode('utf-8'), dest_addr)
# 5. 關閉套接字
udp_socket.close()
執行現象:
在Ubuntu中執行指令碼:
在windows中執行“網路除錯助手”:
問題: sendto()函式的兩個引數分別表示什麼含義
2. udp網路程式-傳送、接收資料
#coding=utf-8
from socket import *
# 1. 建立udp套接字
udp_socket = socket(AF_INET, SOCK_DGRAM)
# 2. 準備接收方的地址
dest_addr = ('192.168.236.129', 8080)
# 3. 從鍵盤獲取資料
send_data = input("請輸入要傳送的資料:")
# 4. 傳送資料到指定的電腦上
udp_socket.sendto(send_data.encode('utf-8'), dest_addr)
# 5. 等待接收對方傳送的資料
# 如果沒有收到資料則會阻塞等待 直到收到資料
recv_data = udp_socket.recvfrom(1024) # 1024表示本次接收的最大位元組數
# 6. 顯示對方傳送的資料
# 接收到的資料recv_data是一個元組
# 第1個元素是對方傳送的資料
# 第2個元素是對方的ip和埠
print(recv_data[0].decode('gbk'))
print(recv_data[1])
# 7. 關閉套接字
udp_socket.close()
python指令碼:
網路除錯助手截圖:
問題:recvfrom函式的引數、返回值的含義分別是什麼?
3. 注意事項
如果UBuntu(Mac) 和 網路除錯助手(windows)平臺通訊時 則需要在傳送時使用UTF8編碼,接收時使用GBK解碼。