首頁 >後端開發 >Python教學 >python中socket實作UDP通訊的介紹(附程式碼)

python中socket實作UDP通訊的介紹(附程式碼)

不言
不言轉載
2018-10-08 17:13:282987瀏覽

這篇文章帶給大家的內容是關於python中socket實現UDP通信的介紹(附程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

UDP

TCP是建立可靠連接, 且通訊雙方都可以以流的形式發送資料。相對TCP, UDP則是面向無連線的協定。使用UDP協定時, 不需要建立連接, 只需要知道對方的IP位址和連接埠號, 就可以直接發送封包。但是, 能不能到達就不知道了。

我們來看看如何透過UDP協定傳輸資料。和TCP類似, 使用UDP的通訊雙方也分為
客戶端和伺服器
socket實作UDP通訊的結構圖

python中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()

測試結果

以兩個命令列分別啟動伺服器和客戶端測試
開啟服務端

python中socket實作UDP通訊的介紹(附程式碼)

完成一次UDP通訊

python中socket實作UDP通訊的介紹(附程式碼)

#

以上是python中socket實作UDP通訊的介紹(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除