udp
是user datagram protocol
的縮寫,即使用者資料報協議。因為其無需連線的服務,所以傳輸效率高(傳送前時延較小)。udp無擁塞控制
和重傳機制
,也就成就了它盡最大努力服務
的性格。
socket(中文名:套接字)
,是程序間通訊的一種方式。我們只要位址(ip+port),就可以完成同乙個終端
或者不同終端
兩個程序之間的通訊,其中:
接下來我們借助python中的socket類,來實現兩個程序之間的通訊……
首先,我們需要實現udp服務端,檔名為udp_server.py,**如下:
import socket
# 服務端的位址(ip+port)
ip_port =
("127.0.0.1"
,9000
)# 建立乙個套接字
udp_sk = socket.socket(
type
=socket.sock_dgram)
# 將該套接字繫結伺服器的位址(ip+port)
udp_sk.bind(ip_port)
# 設定接收1024個位元組,並接收客戶端的訊息和服務端的位址(ip+port)
msg, addr = udp_sk.recvfrom(
1024
)print
(msg.decode(
"utf-8"))
# 伺服器傳送訊息給客戶端(訊息必須轉換成位元組串傳輸)
udp_sk.sendto(b"hello,i'm server,i am really glad to serve you!"
, addr)
# 關閉伺服器套接字
udp_sk.close(
)
接下來,我們需要實現udp客戶端,檔名為udp_client.py,**如下:
import socket
# 服務端的位址(ip+port)
ip_port =
("127.0.0.1"
,9000
)# 建立乙個套接字
udp_sk = socket.socket(
type
=socket.sock_dgram)
# 客戶端傳送訊息給服務端(訊息必須轉換成位元組串傳輸)
udp_sk.sendto(b"hello,i'm client!"
, ip_port)
# 設定接收1024個位元組,並接收服務端的訊息和服務端的位址(ip+port)
msg, addr = udp_sk.recvfrom(
1024
)print
(msg.decode(
"utf-8"
), addr)
實現了upd服務端和客戶端之後,我們首先要啟動服務端(即執行udp_server.py檔案),服務端在等待客戶端連線,所以控制台並無訊息輸出。
然後再執行客戶端(即執行udp_client.py檔案),控制台順出結果如下(按先後次序):
hello,i'm client!
hello,i'm server,i am really glad to serve you! ('
127.0
.0.1',
9000
)
網路程式設計之UDP協議
將資料及源和目的封裝成資料報,不需要建立連線。每個資料報的大小限制在64k內。因無連線,是不可靠的協議,但是速度快。客戶端 1 建立udp傳輸的傳送端 2 建立udp的socket服務 3 將要傳送的資料封裝到資料報中 4 通過udp的socket服務獎資料報傳送過去 5 關閉socket服務 pu...
Linux 網路程式設計之UDP
1.介紹 udp協議是無連線的,不可靠傳輸的協議.伺服器與客戶端的互動不需要建立連線,沒有流量控制的功能。與tcp一樣,它也是傳輸層協議,通訊過程中需要ip位址與埠號。使用udp進行程式設計包括伺服器與客戶端,下面介紹一下伺服器與客戶端的通訊流程 伺服器流程 1 建立伺服器套接字描socket 2 ...
linux網路程式設計之UDP
udp 前面已經講過tcp網路通訊,然後tcp每次通訊都要進行三次握手連線,雖然傳輸的可靠性比較高,但對於一些及時性的資料的傳輸顯得太過費時,所以就有了udp這種無連線通訊,但資料容易出錯。伺服器端填充 sockaddr結構 bzero addr,sizeof struct sockaddr in ...