2.傳送/接收資料
3.關閉套接字
import socket
def main():
# 1、建立 udp 套接字
# socket.af_inet 表示 ipv4 協議 af_inet6 表示 ipv6 協議
# socket.sock_dgram 資料報套接字,只要用於 udp 協議
udp_socket = socket.socket(socket.af_inet, socket.sock_dgram)
# 2、準備接收方的位址
# 元組型別 ip 是字串型別 埠號是整型
dest_addr = ('192.168.113.111', 8888)
# 要傳送的資料
send_data = "我是要傳送的資料"
# 3、傳送資料
udp_socket.sendto(send_data.encode("utf-8"), dest_addr)
# 4、等待接收方傳送的資料 如果沒有收到資料則會阻塞等待,直到收到資料
# 接收到的資料是乙個元組 (接收到的資料, 傳送方的 ip 和埠)
# 1024 表示本次接收的最大位元組數
recv_data, addr = udp_socket.recvfrom(1024)
# 5、關閉套接字
20. udp_socket.close()
if __name__ == '__main__':
main()
因為在網路中傳輸的資料都是二進位制格式的,所以需要將資料進行編碼成二進位制
str ---> bytes : encode() 編碼
bytes ---> str : decode() 解碼
1.建立「伺服器端」套接字2.繫結埠
3.傳送/接收資料
4.關閉套接字
import socket
def main():
# 1、建立 udp 套接字
# socket.af_inet 表示 ipv4 協議 af_inet6 表示 ipv6 協議
# socket.sock_dgram 資料報套接字,只要用於 udp 協議
udp_socket = socket.socket(socket.af_inet, socket.sock_dgram)
# 2、繫結埠
# 元組型別 ip 一般不寫 表示本機的任何的乙個 ip
local_addr = ('', 7777)
udp_socket.bind(local_addr)
# 3、準備接收方的位址
# 元組型別 ip 是字串型別 埠號是整型
dest_addr = ('192.168.113.111', 8888)
# 要傳送的資料
send_data = "我是要傳送的資料"
# 4、傳送資料
udp_socket.sendto(send_data.encode("utf-8"), dest_addr)
# 5、等待接收方傳送的資料 如果沒有收到資料則會阻塞等待,直到收到資料
# 接收到的資料是乙個元組 (接收到的資料, 傳送方的 ip 和埠)
# 1024 表示本次接收的最大位元組數
recv_data, addr = udp_socket.recvfrom(1024)
# 6、關閉套接字
udp_socket.close()
if __name__ == '__main__':
main()
udp通訊過程,很類似生活中的 「傳送簡訊」。只管傳送出去,不管對方有沒有收到。
socket物件的主要方法是sendto() 和 recvfrom()
關於TCP和UDP的總結
tcp udp 埠號 協議號 tcp 傳輸控制協議,可靠度面向使用者的連線。udp 使用者資料報協議,不可靠的無連線服務。埠號 為了標識上層 應用層 協議。協議號 用於標識上層 傳輸層 協議。mtu 最大傳輸單元,針對網路層資料的大小。mss 最大報文段長度,針對tcp能承載的資料大小。2.tcp資...
關於UDP協議
udp協議的特點。1.udp是乙個無連線協議,傳輸資料之前接收端和傳送端之間不建立連線。想傳輸資料的時候就抓取資料扔出去,不監控是否被正確和全面的接受到。2.因為不需要建立連線,也就不需要維護連線狀態,會因此一台傳送機器可以向多台接收機器傳輸相同的資訊,只需要管理ip和介面。3.udp具有較好的實時...
UDP協議總結
1 tcp ip詳解 卷1 協議 2 tcp ip協議族 第4版 3 計算機網路 第5版 使用者資料報協議的英文縮寫為udp,udp是一種無連線且不可靠的運輸層協議,udp沒有流量控制和擁塞控制,除了檢驗和之外,沒有其他的差錯控制。i.udp資料報 udp資料報由udp首部和資料組成,其中udp首部...