1. 程式人生 > 實用技巧 >UNP——原始套接字

UNP——原始套接字

本文例項講述了Python 網路程式設計之UDP傳送接收資料功能。分享給大家供大家參考,具體如下:

demo.py(UDP傳送資料):

import socket # 匯入socket模組
def main():
  # 建立一個udp套接字
  udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  # 繫結本機ip和埠號 (傳送資料時,如果不繫結,系統會隨機分配埠號。接收資料時,一般需要手動繫結ip和埠)
  udp_socket.bind(("", 7890)) # 空字串""表示本地ip
  # 從鍵盤獲取資料
  send_data = input("請輸入要傳送的資料:")
  # 可以使用套接字接收和傳送資料
  # udp_socket.sendto(b"hahahah", ("192.168.33.53", 7788)) # 字串前的b表示bytes位元組型別
  udp_socket.sendto(send_data.encode("utf-8"), ("192.168.33.53", 7788)) # encode將字串轉成bytes型別
  # 關閉套接字
  udp_socket.close()
if __name__ == "__main__":
  main()

demo.py(UDP接收資料):

import socket
def main():
  # 1. 建立套接字
  udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  # 2. 繫結本機ip和埠
  udp_socket.bind(("", 7788)) # 繫結本機的ip和埠(元組型別) ""表示本機ip
  # 3. 用套接字接收資料
  recv_data = udp_socket.recvfrom(1024)  # 1024表示本次接收的最大位元組數。會阻塞程式碼,直到接收到資料
  # recv_data這個變數中儲存的是一個元組 (接收到的資料,(傳送方的ip, port))
  recv_msg = recv_data[0] # 位元組型別 儲存接收到的資料
  send_addr = recv_data[1] # 元組 儲存傳送方的地址和埠資訊
  # 4. 列印接收到的資料
  # print(recv_data) # 元組 (接收到的資料,(傳送方的ip, port))
  print("%s:%s" % (str(send_addr), recv_msg.decode("gbk"))) # decode將位元組轉成字串
  # 5. 關閉套接字
  udp_socket.close()
if __name__ == "__main__":
  main()

更多關於Python相關內容可檢視本站專題:《Python Socket程式設計技巧總結》、《Python資料結構與演算法教程》、《Python函式使用技巧總結》、《Python字串操作技巧彙總》、《Python入門與進階經典教程》及《Python檔案與目錄操作技巧彙總

希望本文所述對大家Python程式設計有所幫助。