天天操天天拍-天天操天天射天天-天天操天天射天天操-天天操天天添-欧美乱码伦视频免费-欧美乱一级在线观看

您現在所在的位置:首頁 >學習資源 > Python全棧+人工智能入門教材 > Python基礎入門教程30.3:企業級開發進階 UDP編程

Python基礎入門教程30.3:企業級開發進階 UDP編程

來源:奇酷教育 發表于:

本節內容如下什么是UDP協議UDP網絡編程——服務端程序開發UDP網絡編程——客戶端程序開發1 什么是UDP協議回顧TCP協議:一個非常重要的數據

本節內容如下
  • 什么是UDP協議
  • UDP網絡編程——服務端程序開發
  • UDP網絡編程——客戶端程序開發

1.什么是UDP協議

回顧TCP協議:一個非常重要的數據傳輸協議,很多網絡協議都是以TCP協議為基礎的;TCP協議要求服務器和客戶端通過三次握手交互的方式建立可靠的連接,然后再進行數據保溫的發送,在發送過程中保證數據包的順序和數量不會丟失,最后如果要斷開連接需要四次揮手的方式進行連接的安全斷開。

UDP協議:是一種用戶數據報協議,是一種非連接的協議,傳輸數據之前服務端和客戶端之間不建立連接,當進行數據傳送時就將應用程序中的數據提取出來并放在網絡上;
發送端發送數據,只是收到當前應用程序生成數據的速度、計算能力和傳輸帶寬等因素的影響
接收端接收數據,UDP將消息放在一個消息隊列中,應用程序從消息隊列中讀取消息

UDP特性:
1、傳輸數據不建立連接,不需要維護連接狀態,同一個服務端可以向多個客戶端廣播發送消息
2、UDP數據包標題8個字節,TCP需要20個字節,額外開銷較小
3、UDP是不可靠的傳輸協議,不保證所有的數據接收端完整并且正確的接收
4、UDP協議是面向報文的,發送端UDP直接將程序中的數據封裝成報文交給IP層進行傳輸,所以需要我們在程序中處理好報文數據的大小

關于TCP和UDP那點事兒
1、基于連接和非連接的
2、對系統資源的消耗多和少
3、TCP程序結構復雜、UDP程序結構簡單明了
4、數據流模式的數據和數據報模式的數據
5、TCP是可靠的傳輸協議,UDP是不可靠的傳輸協議

2.UDP編程API簡單了解


socket(family, type):用于表示網絡連接的socket對象
family:socket.AF_INET用于表示使用IPv4地址
type:socket.SOCK_DGRAM表示使用數據報模式


s.bind((ip, port)):用于將套接字對象s和對應ip的主機及端口port綁定
注意:參數是一個元組


s.recvfrom(buffer):用于從socket中接收數據的方法
參數buffer:用于接收數據的緩沖區大小
返回值:得到客戶端發送的消息和客戶端的主機地址等信息


s.sendto(data, address):用于發送數據的方法
參數data:要發送的數據
參數address:數據發送的目的地地址


s.close()用于關閉套接字對象
使用完之后,一定要記得關閉網絡套接字對象,釋放系統資源哦


3. UDP服務端編程

和TCP網絡編程一樣,首先我們先開發服務端程序
服務端的程序開發步驟:首先創建表示網絡傳輸的套接字對象socket();其次綁定對應的主機IP地址和端口號;接下來就可以進行消息的收發處理了;最后關閉套接字對象釋放系統資源


UDP服務端編程
# 引入socket模塊
import socket

# 創建socket對象
sc = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 綁定主機端口
sc.bind(("", 9999))

# 開始收發消息
data = True
while data:
    # 接收客戶端發送的消息
    data, addr = sc.recvfrom(1024)
    if "bye" == data.decode("UTF-8"):
        print("結束通話")
        break
    print("客戶端發來消息:%s" % data.decode("UTF-8"))

    # 發送消息
    data = input("請輸入要發送給客戶端的消息:")
    sc.sendto(data.encode("UTF-8"), addr)

# 關閉套接字對象
sc.close()

4. UDP客戶端編程

相對于服務端的編程,客戶端編程非常簡單,創建一個連接服務器的套接字對象,就可以直接進行數據收發處理了


UDP客戶端編程處理
import socket
# 創建socket套接字對象
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 開始收發消息
data = input("請輸入要發送給服務器的消息:")
while data:
    # 發送消息
    client.sendto(data.encode("UTF-8"), ("192.168.10.108", 9999))

    # 接收消息
    data, addr = client.recvfrom(2014)
    if "bye" == data.decode("UTF-8"):
        print("結束通話")
        break;
    print("服務器%s發來消息:%s" % (addr, data.decode("UTF-8")))
    data = input("請輸入要發送給服務器的消息:")

# 關閉套接字對象
client.close()

運行上面的服務端程序和客戶端程序,就可以實現服務端和客戶端之間的數據通信了。和TCP不同的是,大家可以通過上面的程序進行測試,當服務端或者客戶端一方的程序結束時,不會影響另一方的程序運行。

 >>>更多VR/AR入門教程:VR入門


 
主站蜘蛛池模板: 免费伊人网| 久草一级片 | 国产成人禁片在线观看 | 毛片免费40分钟视频 | 黄片毛片免费在线观看 | 岛国午夜精品视频在线观看 | 国产成人青青热久免费精品 | 国产免费久久精品久久久 | 黄色一级片免费观看 | 国产女主播在线播放一区二区 | 国产人妖系列在线精品 | 男女激情视频网站 | 成人在线播放av | 久久婷婷激情综合中文字幕 | 国产成人午夜性a一级毛片 国产成人亚洲精品2020 | 成人不卡在线 | 老外一级毛片 | 激情视频在线免费 | 毛片com| 国产黄色一级大片 | 久久综合九色综合97手机观看 | 国产精品美女久久福利网站 | 国产成人精品免费视频网页大全 | 国产一区二区三区高清视频 | 精品福利在线播放 | 久久免费精品视频 | 狼人色| 国产在线观看自拍 | 国产在线播 | 蜜桃丶麻豆91制片厂 | 麻豆国产在线视频 | 国产免费久久精品丫丫 | 久久国产精品只做精品 | 米奇色777狠狠欧美一区 | 国产高清国内精品福利99久久 | 久久精品亚洲精品国产色婷 | 精品无人区一区二区三区 | 久久国产精品久久国产精品 | 黄色一级大片视频 | 国产 日韩 欧美 高清 | 激情毛片视频 |