Python - UDP通訊
UDP通訊原理
由於UDP協議不是基於連結的協議,所以在傳送資料的時候不需要建立連結。在資料的每一次傳送和接收的時候,都需要傳送UDP報頭,指定接收端的IP和埠資訊。效率與TCP相比更高。使用UDP的常見服務如DNS,FTP等。
UDP資料包一般包含512個位元組,當大於512位元組時,可能會出現傳輸不穩定的情況。
示例:
# 服務端
# coding=utf-8
import socket
server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 基於網路的資料包協議 UDP
server.bind(('127.0.0.1',8080))
while True:
msg,addr=server.recvfrom(1024)
print(msg,addr)
server.sendto(msg.upper(),addr)
# 客戶端
#_*_coding:utf-8_*_
import socket
client=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
while True:
msg=input('>>: ').strip()
if not msg:continue
client.sendto(msg.encode('utf-8'),('127.0.0.1', 8080))
back_msg,addr=client.recvfrom(1024)
print(back_msg.decode('utf-8'),addr)
UDP每個傳送的資料都含所有自身的報頭,不像TCP那樣是流式的資料,所以不存在粘包現象。
udp的recvfrom是阻塞的,一個recvfrom(x)必須對唯一一個sendto(y),收完了x個位元組的資料就算完成,若是y>x資料就丟失,這意味著udp根本不會粘包,但是會丟資料,不可靠。
tcp 協議的資料不會丟,沒有收完的包下一次會接著收取上一次沒收完的資料,本端總是在收到ack時才會清除緩衝區內容。資料是可靠的,但是會粘包。
相關文章
- python UDP套接字通訊PythonUDP
- udp網路通訊UDP
- ACE中UDP通訊UDP
- java實現UDP通訊JavaUDP
- 網路通訊1:UDPUDP
- SwiftNIO初探-簡單UDP通訊SwiftUDP
- 通訊協議:HTTP、TCP、UDP協議HTTPTCPUDP
- Linux中的UDP通訊LinuxUDP
- C# 通過socket實現UDP 通訊C#UDP
- Java&Python的TCP&UDP通訊-網路程式設計JavaPythonTCPUDP程式設計
- 使用UDP如何進行網路通訊UDP
- Java網路程式設計UDP通訊原理Java程式設計UDP
- Visual C++設計UDP協議通訊示例C++UDP協議
- Socket,TCP,UDP,HTTP基本通訊原理和OC版本DemoTCPUDPHTTP
- QT開發的即時通訊軟體(基於UDP)QTUDP
- SOCKET通訊中TCP、UDP資料包大小的確定TCPUDP
- TCP和UDP實現簡單一對一通訊TCPUDP
- 【Python】socket通訊Python
- C# wm6透過udp協議和pc通訊C#UDP協議
- Android與物聯網裝置通訊-UDP&TCP協議AndroidUDPTCP協議
- Android基於UDP的區域網聊天通訊(有完整Demo)AndroidUDP
- .Net開發筆記(十四) 基於“泵”的UDP通訊(接上篇)筆記UDP
- 即時通訊技術文集(第10期):IM通訊協議該選TCP還是UDP [共12篇]協議TCPUDP
- python 多程式通訊模組Python
- Python3 websocket通訊PythonWeb
- python中的訊號通訊 blinkerPython
- 初步理解Python程式的訊號通訊Python
- UDP協議網路Socket程式設計(java實現C/S通訊案例)UDP協議程式設計Java
- TCP/UDP簡易通訊框架原始碼,支援輕鬆管理多個TCP服務端(客戶端)、UDP客戶端TCPUDP框架原始碼服務端客戶端
- Python非同步通訊模組asynchatPython非同步
- Python非同步通訊模組asyncorePython非同步
- 在Go和Python之間通過ActiveMQ通訊GoPythonMQ
- Golang 實現客戶端與伺服器端UDP協議連線通訊Golang客戶端伺服器UDP協議
- python兩個子執行緒通過queue通訊Python執行緒
- 使用Python語言通過PyQt5和socket實現UDP伺服器PythonQTUDP伺服器
- Android與物聯網裝置通訊-利用UDP廣播來做裝置查詢AndroidUDP
- python 中的UDP和TCP(1)PythonUDPTCP
- Java 和 Python 之間的 Socket 通訊JavaPython