internet 協議集支援乙個無連線的傳輸協議,該協議稱為使用者資料報協議(udp,user datagram protocol)。udp 為應用程式提供了一種無需建立連線就可以傳送封裝的 ip 資料報的方法。rfc 768 [1] 描述了 udp。
internet 的傳輸層有兩個主要協議,互為補充。無連線的是 udp,它除了給應用程式傳送資料報功能並允許它們在所需的層次上架構自己的協議之外,幾乎沒有做什麼特別的的事情。面向連線的是 tcp,該協議幾乎做了所有的事情
傳送端
import socket
defmain()
:#建立乙個udp套接字
udp_socket = socket.socket(socket.af_inet,socket.sock_dgram)
#如果沒有繫結,故接收端只有隨機埠接收
udp_socket.bind((""
,7789))
while
true
:#獲取資料
send_data =
input
("請輸入要傳送的資料"
)if send_data ==
"exit"
:break
#ip,port
address =
("127.0.0.1"
,7788
)#可以使用套接字收發資料 第乙個引數必須為二進位制資料 第二個引數是乙個元組(ip,port)
# udp_socket.sendto(b"hahaha",address)
udp_socket.sendto(send_data.encode(
"utf-8"
),address)
#關閉 udp_socket.close(
)if __name__ ==
'__main__'
:#傳送伺服器啟動
main(
)
接收端
import socket
defmain()
:# 建立乙個udp套接字
udp_socket = socket.socket(socket.af_inet, socket.sock_dgram)
# 繫結本地的相關資訊,如果乙個網路程式不繫結,系統會隨機分配
address =
("127.0.0.1"
,7788
) udp_socket.bind(address)
for i in
range(0
,100):
#等待接收對方傳送的資料 1024表示的是每一次接收的最大位元組數
recv_data = udp_socket.recvfrom(
1024
) recv_mess = recv_data[0]
send_addre = recv_data[1]
print
(recv_mess.decode(
"utf-8"),
str(send_addre)
)#recv_mess.decode("utf-8")
# 關閉
udp_socket.close(
)if __name__ ==
'__main__'
:print
("接收伺服器啟動"
) main(
)
注意 Python網路程式設計之UDP
udp處理資料報,是一種無連線的協議 伺服器端 server socket.socket socket.af inet,socket.sock dgram 繫結ip server.bind 192.168.1.104 221 while true 接收 data,address server.rec...
UDP網路程式設計
基於udp 伺服器 程式步驟 1.建立乙個socket,用socket 函式 2.繫結ip位址 埠等資訊到socket上,用函式bind 3.迴圈接收資料,用recvfrom 4.關閉網路連線。基於udp 客戶端 程式步驟 1.建立乙個socket,用socket 函式 2.繫結ip位址 埠等資訊到...
UDP網路程式設計
基於udp 通訊模型 由上圖可以看出udp通訊的步驟如下 基於udp 伺服器 1 建立乙個socket,用函式socket 2 繫結ip位址 埠等資訊到socket上,用函式bind 3 迴圈接收資料,用函式recvfrom 4 關閉網路連線 基於udp 客戶端 1 建立乙個socket,用函式so...