UDP编程

作者: 言烬 | 来源:发表于2018-08-15 20:51 被阅读0次

    UDP:User Datagram Protocol 用户数据报协议
    是 OSI/RM 模型中隶属于传输层的面向无连接的网络数据传输协议。
    UDP 协议本身没有连接可靠性的保证,没有数据顺序 ACK 记录,没有数据重发等机制,因 为没有那么多的数据传输控制特性,所以 UDP 进行数据传输过程中延迟较小,数据传输效 率较高,比较适合对可靠性要求不是很高的程序!

    服务端开发:

    #引入需要的模块
    import socket
    
    #定义需要的服务器信息
    HOST = ''
    PORT = 10000
    ADDRESS = (HOST, PORT)
    BUFFER = 1024
    
    #创建UDP套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    #绑定主机
    udp_socket.bind(ADDRESS)
    print("主机正在准备接收数据")
    
    #接受/发送数据
    while True:
    
        #接收数据
        msg, addr = udp_socket.recvfrom(BUFFER)
        try:
            print("client:", addr, msg.decode("utf-8"))
        except:
            print("client:", addr, msg.decode("gbk"))
    
        #发送数据
        info= input("请输入您要发送的消息:")
        udp_socket.sendto(info.encode('utf-8'), addr)
    

    客户端开发:

    #引入需要的模块
    import socket
    
    #目标主机地址
    HOST = '192.168.13.13'
    PORT = 10000
    ADDRESS = (HOST, PORT)
    BUFFER = 1024
    
    #发送/接受消息
    udp_client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    while True:
        info = input("请输入你要发送的消息:")
        udp_client.sendto(info.encode('utf-8'), ADDRESS)
        if info == "BYE":
            udp_client.close()
            break
    
        msg, addr = udp_client.recvfrom(BUFFER)
        try:
            print(addr, "say:", msg.decode("utf-8"))
        except:
            print(addr, "say:", msg.decode("gbk"))

    相关文章

      网友评论

        本文标题:UDP编程

        本文链接:https://www.haomeiwen.com/subject/iskgbftx.html