1. 程式人生 > >【Python】udp網路程式-傳送、接受資料

【Python】udp網路程式-傳送、接受資料

udp網路程式-傳送、接收資料

1. udp網路程式-傳送資料

建立一個基於udp的網路程式流程很簡單,具體步驟如下:

  1. 建立客戶端套接字
  2. 傳送/接收資料
  3. 關閉套接字

與發簡訊類似。

程式碼如下:

#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解碼。