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')进行转码