這篇文章帶給大家的內容是關於python中socket實現UDP通信的介紹(附示例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
UDP
TCP是建立可靠連接, 且通訊雙方都可以以流的形式發送資料。相對TCP, UDP則是面向無連線的協定。使用UDP協定時, 不需要建立連接, 只需要知道對方的IP位址和連接埠號, 就可以直接發送封包。但是, 能不能到達就不知道了。
我們來看看如何透過UDP協定傳輸資料。和TCP類似, 使用UDP的通訊雙方也分為
客戶端和伺服器
socket實作UDP通訊的結構圖
UDP服務端
和TCP類似, 使用UDP的通訊雙方也分為客戶端和伺服器。伺服器首先需要綁定連接埠。但不需要監聽客戶端的連線
#server import socket #创建Socket时, SOCK_DGRAM 指定了这个Socket的类型是UDP。 server = socket.socket(type=socket.SOCK_DGRAM) server.bind(('192.168.1.165',7890)) #不需要调用 listen() 方法, 而是直接接收来自任何客户端的数据 print('服务端已开启7890端口,正在等待被连接...') #recvfrom() 方法返回数据和客户端的地址与端口, 这样, 服务器收到数据后, #直接调用 sendto() 就可以把数据用UDP发给客户端 data,address = server.recvfrom(1024) print("client>>",data.decode('utf-8')) print("客户端连接的socket地址:", address) server.sendto(b'drink more water!',address) server.close()
UDP客戶端
客戶端使用UDP時, 首先仍建立基於UDP的Socket, 然後, 不需要呼叫 connect( ) , 直接透過sendto() 給伺服器發資料
import socket #创建Socket时, SOCK_DGRAM 指定了这个Socket的类型是UDP。 client = socket.socket(type=socket.SOCK_DGRAM) send_data =b'hello sheenstar' client.sendto(send_data,('192.168.1.165',7890)) re_Data,address = client.recvfrom(1024) print('server>>',re_Data.decode('utf-8')) client.close()
測試結果
用兩個命令列分別啟動伺服器和客戶端測試
開啟服務端
完成一次UDP通訊
以上是python中socket實作UDP通訊的介紹(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!