zoukankan      html  css  js  c++  java
  • python六十八课——网络编程之UDP协议

    1.1 概述

    UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

    由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

    但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议。UDP的交换过程如下图所示。

    udp_server.py
    import socket
    '''
    使用udp编写服务端的程序:
    核心:得到socket对象
    在创建对象的过程中,需要传入两个参数:
    第一个参数:满足(匹配)ipv4的规则(socket.AF_INET)
    第二个参数:判断到底是满足tcp协议编程(socket.SOCK_STREAM)还是udp协议编程(socket.SOCK_DGRAM)
    面向无连接的编程
    '''
    #得到服务端的socket对象
    udp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    
    #绑定服务器的ip和端口号
    udp_server=('10.11.63.132',6666)
    udp_server_socket.bind(udp_server)
    
    #循环接受和发送数据
    while 1:
        #接受客户端发送过来的数据,返回两个对象:1).数据内容 2).客户端的信息(元祖对象)
        recv_data,cilent_info=udp_server_socket.recvfrom(1024)
        print(recv_data)
        print(cilent_info)
        print('客户端说:' + recv_data.decode('utf-8'))
    
        #发送数据给客户端
        data=input('>>>: ')
        udp_server_socket.sendto(data.encode('gbk'),cilent_info)
    
        #关闭套接字对象
        udp_server_socket.close()

    udp_cilent.py

    import socket
    '''
    使用udp编写服务端的程序:
    核心:得到socket对象
    在创建对象的过程中,需要传入两个参数:
    第一个参数:满足(匹配)ipv4的规则(socket.AF_INET)
    第二个参数:判断到底是满足tcp协议编程(socket.SOCK_STREAM)还是udp协议编程(socket.SOCK_DGRAM)
    面向无连接的编程
    '''
    #得到服务端的socket对象
    udp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    
    #绑定服务器的ip和端口号
    udp_server=('10.11.63.132',6666)
    udp_server_socket.bind(udp_server)
    
    #循环接受和发送数据
    while 1:
        #接受客户端发送过来的数据,返回两个对象:1).数据内容 2).客户端的信息(元祖对象)
        recv_data,cilent_info=udp_server_socket.recvfrom(1024)
        print(recv_data)
        print(cilent_info)
        print('客户端说:' + recv_data.decode('utf-8'))
    
        #发送数据给客户端
        data=input('>>>: ')
        udp_server_socket.sendto(data.encode('gbk'),cilent_info)
    
        #关闭套接字对象
        udp_server_socket.close()

    返回目录
  • 相关阅读:
    Mysql探索之索引详解,又能和面试官互扯了~
    POJ 1163
    POJ 1157
    POJ 1143
    POJ 1164
    HDU 2553
    POJ 1321
    POJ 1125
    POJ 2488
    POJ 3083
  • 原文地址:https://www.cnblogs.com/hankleo/p/10526683.html
Copyright © 2011-2022 走看看