天天看點

簡單易懂的udp實作簡單的udp請求服務模式

實作簡單的udp請求服務模式

udp 是一種簡單傳輸協定,實作簡單,占用系統資源少

運作結果

用戶端

服務端

服務端代碼

# _*_ coding: utf-8 _*_

import time
from socket import *
'''建立簡單的udp服務端'''


# 建立套接字
soc = socket(AF_INET, SOCK_DGRAM)

# 設定本地位址
local_addr = ("", 50000)
# 綁定本地位址
soc.bind(local_addr)

# 進入等待服務模式
while True:
    # 一次接受的最大位元組數為3000
    rec_addr, rec_txt = soc.recvfrom(3000)
    # 列印接收的結果
    print("%s>>%s"%(rec_addr, rec_txt))
    # 為避免cpu占用過高,使用延時政策
    time.sleep(0.5)


           

用戶端代碼

# _*_ coding: utf-8 _*_

from socket import *
import time

# 設定服務端和用戶端ip和端口資訊
local_addr = ("", 51000)
dest_addr = ("", 50000)

while True:
    # 建立端口
    soc = socket(AF_INET, SOCK_DGRAM)
    # 綁定端口
    soc.bind(local_addr)

    mes = input("請輸入需要發送的資訊:")

    # 發送套接字

    soc.sendto(mes.encode("utf-8"), dest_addr)

    # 延時政策
    time.sleep(0.1)

    # 關閉套接字

    soc.close()

           

小結

向服務端發送消息5個要點:

  • 用戶端ip
  • 用戶端端口
  • 服務端ip
  • 服務端端口
  • 需要發送的資訊

容易出錯的點:

  • 使用sendto或recvfrom函數的時候,接收到的第一個參數是消息第二個參數是ip和端口資訊
  • window decode參數為gbk(國标碼,windows的編碼問題一直是個問題 -_- )

編寫技巧

  • 先把5要點(用戶端ip, 用戶端端口, 服務端ip, 服務端端口, 需要發送的消息)寫好,再建立套接字
  • 快速建立udp套接字寫法:
from socket import *
# 建立udp套接字,命名為soc
soc = socket(AF_INET, SOCK_DGRSM)
           

繼續閱讀