udp發送數據注意點:
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
1、初始化socket 兩個參數 第一個 ip/1v4協議 第二個是tcp還是udp協議
socket.SOCK_DGRAM----udp協議 socket.SOCK_STREAM-----tcp協議
2發送的數據為bytes類型,記得轉型, ip+端口是tuple類型
udp_socket.sendto(send_data.encode("utf-8"), ("192.168.20.143", 8080))
循環發送udp數據信息:
def udpSend(): # 創建套接字 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 綁定端口,發送數據時會從綁定的端口發送,不會再生成隨機端口 udp_socket.bind(("", 8080)) # 使用套接字進行數據傳輸 while True: send_data = input("請輸入傳輸的數據") # (內容,地址>元組) udp_socket.sendto(send_data.encode("utf-8"), ("ip地址", 8080)) if send_data == "exit": break # 關閉套接字 udp_socket.close()
總結:
步驟和之前調用模塊差不多:1、初始化udp/tcp套接字 2、使用套接字收發數據 3、關閉套接字
udp接收數據:
def udpGet(): """ 1、創建套接字 2、綁定一個本地信息 3、接收數據 4、打印接收數據 5、關閉套接字 :return:None """ s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) loacl_addr = ("",7878) s.bind(loacl_addr) while True: recv_data = s.recvfrom(1024) print(recv_data,tuple(recv_data)) if recv_data[0].decode('gbk') == "exit": break s.close()
接收的數據為元祖類型 其中接收的data為bytes類型,需要decode('gbk')進行轉碼