1. 程式人生 > >python(就業階段)——網路UDP

python(就業階段)——網路UDP

<1>UDP含義:

英文全拼(User Datagram Protocol)簡稱使用者資料報協議,它是無連線的、不可靠的網路傳輸協議

<2>UDP特點:

無連線、資源開銷小(udp每個資料包最大是64K)、傳輸速度快、沒有超時重發機制。

<3>UDP的優缺點:

(1)優點:傳輸速度快、不需要連線,資源開銷小 (2)缺點:傳輸資料不可靠,容易丟資料包、沒有流量控制。(當對方沒有及時接收資料,傳送方一直髮送資料會導致緩衝區資料滿了,電腦出現卡死情況,所有接收方需要及時接收資料。)

<4>socket介紹 1、socket的概念:

(套接字)不同程序之間進行通訊的工具,將資料從一方傳到另一方,完成資料傳輸

2、udp網路程式流程

(1)建立客戶端套接字   import socket —> soc = socket.socket(AddressFamily, Type)

1、Address Family:IP地址型別; AF_INET表示ipv4型別、AF_INET6表示ipv6型別; 2、Type:套接字型別,可以是 SOCK_STREAM(TCP 協議)或者 SOCK_DGRAM(用UDP 協議)

(2)傳送/接收資料

1、傳送資料  soc.sendto(send_data,(ip,port)) 2、收發資料  soc.recvfrom(1024)  ps:1024表示本次接收的最大位元組數。 3、Windows使用的是gbk編碼 4、Linux使用的是utf-8編碼   說明:一個udp網路程式,不繫結埠號,此時作業系統會隨機分配一個埠號,如果繫結埠號,每次啟動程式埠號不變。如果需要做成一個伺服器端的程式的話,是需要繫結的

(3)關閉套接字  soc.close()

3、資料編碼和解碼

(1)str->bytes:encode編碼  str.encode(encoding=“utf-8”, errors=“strict”) (2)bytes->str:decode解碼  bytes.decode(encoding=“utf-8”, errors=“strict”) 說明:   1> strict:表示嚴格按照指定編解碼方式進行編碼和解碼,如果編解碼不成功則崩潰   2> ignore:表示忽略編解碼不成功的字元,如果編解碼不成功程式不會崩潰

4、UDP傳送廣播訊息

(1)廣播地址最常用的是255.255.255.255 (2)設定socket的選項,允許傳送廣播訊息:   格式:udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, True) 說明:   1> socket.SOL_SOCKET -> 表示當前套接字   2> socket.SO_BROADCAST -> 表示套接字廣播選項