亚洲欧美日韩精品久久亚洲区_国产精品嫩草影院在线播放_亚洲看片网_黄色国产_奇米网第四色_精品视频在线一区

您現在所在的位置:首頁 >學習資源 > 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入門


 
主站蜘蛛池模板: av大片在线| jizz亚洲日本 | 国产欧美视频一区二区三区 | 在线精品亚洲欧美日韩国产 | 久久网亚洲 | 91一区二区三区在线观看 | 成年网站在线观看 | 日日噜噜夜夜狠狠视频buoke | 久久精品日韩 | 久久华人| 91免费在线| 艹逼视频免费 | 欧美freexx| 99热官网 | 在线国产视频 | 看毛片的网站 | 91日本在线观看亚洲精品 | 国产福利视频 | 成人性生交大片 | www.com黄色 | 国产欧美日韩一区 | 看全色黄大色黄大片色黄看的 | 黑人一区 | 一级做a爰片久久毛片唾 | 精品国产第一国产综合精品 | 欧美精品 在线播放 | 精品欧美亚洲韩国日本久久 | 欧美午夜免费观看福利片 | 日韩区在线 | 亚洲欧美国产另类视频 | 国产精品乱码人人做人人爱 | 一个看片免费视频www | 天天色天天看 | 99热这里只有精品8 免费看搡女人的视频 | 日韩高清免费在线观看 | 日韩成人在线视频 | 国产欧美一区二区 | 午夜宫电影 | 国产精品黄网站免费进入 | 精品日韩欧美一区二区三区在线播放 | 国产视频在线免费观看 |