udp套接字收发数据

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






原文地址:https://www.cnblogs.com/XXQQ123/p/11685168.html