Python的簡單udp使用

2021-08-24 18:11:30 字數 2128 閱讀 3343

udp介紹

udp 是一種無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務。

udp協議全稱是使用者資料報協議,在網路中它與tcp協議一樣用於處理資料報,是一種無連線的協議。

udp原理圖

3. udp聊天器

"""

實現udp的聊天器

1.獲取鍵盤資料,並將起傳送給對方

2.接收資料並顯示

3.並且功能資料進行選擇以上2個功能呼叫

"""# 伺服器必須繫結位址,客戶端只要有傳送位址就好了不用繫結位址

import socket

defsend_msg

(udp_socket):

"""獲取鍵盤資料,並將其傳送給對方"""

# 1. 從鍵盤輸入資料

msg = input("\n請輸入要傳送的資料:")

# 2. 輸入對方的ip位址

# 3. 輸入對方的port

dest_port = int(input("\n請輸入對方的port:"))

# 4. 傳送資料

udp_socket.sendto(msg.encode("utf-8"), (dest_ip, dest_port))

defrecv_msg

(udp_socket):

"""接收資料並顯示"""

# 1. 接收資料

recv_msg = udp_socket.recvfrom(1024))

# 2. 解碼

recv_ip = recv_msg[1]

recv_msg = recv_msg[0].decode("utf-8")

# 3. 顯示接收到的資料

print(">>>%s:%s" % (str(recv_ip), recv_msg))

# recv_msg = udp_socket.recv(1024) #recv只接收資料,recvfrom接收乙個元組 (資料,ip位址)

# recv_msg = recv_msg.decode('utf-8')

# print(recv_msg)

defmain

():# 1. 建立套接字

udp_socket = socket.socket(socket.af_inet, socket.sock_dgram)

# 2. 繫結本地資訊

udp_socket.bind(("", 7890))

while

true:

# 3. 選擇功能

print("=" * 30)

print("1:傳送訊息")

print("2:接收訊息")

print("=" * 30)

op_num = input("請輸入要操作的功能序號:")

# 4. 根據選擇呼叫相應的函式

if op_num == "1":

send_msg(udp_socket)

elif op_num == "2":

recv_msg(udp_socket)

else:

print("輸入有誤,請重新輸入...")

if __name__ == "__main__":

main()

# socket.af_inet  internet 間通訊

# socket.af_unix 本機通訊

# socket.sock_stream 流式套接字 tcp協議

# socket.sock_dgram 資料報套接字 udp協議

# encode('utf-8') liunux裡的格式

# encode('gbk') windows裡的格式

# bind(('',port)) ''指本機任何ip都可以

4.無連線

從上面程式我們可以看出,只要有傳送位址,有套接字,就可以直接傳送資料,不需要與目標機連線,(就像生活中有人給你東西,但他給的時候不提醒你,你很容易忽略一些不起眼的東西)所以udp提供的是簡單不可靠資訊資料傳送,接收的目標機很容易接收資料不完整。

Udp的簡單使用

傳送端 client 1.建立datagramsocket物件 scanner scanner new scanner system.in datagramsocket dp new datagramsocket 2.定義要傳送的物件 string message scanner.next 3.將要...

Python 實現udp簡單通訊

學習 指路 server端 匯入socket import socket 設定埠號,主機號 port 12345 host 將上面倆放在位址裡 addr host,port 為該物件繫結固定位址 ip,埠號 server socket.bind addr while true recvfrom 表示...

python實現簡單tftp 基於udp

from threading import thread from socket import import struct def upload filename,user ip,user port num 0 f open filename,ab s up socket af inet,sock ...