• Python网络编程-UDP(基于socket)


    UDP网络编程实战

    基于socket库,socket是Python3的标准库。搭建一个简易的服务器与客户端,让他们之间做简单的数据交互。

    1.UDP数据传输流程

    UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

    UDP协议与TCP协议一样用于处理数据包,在OSI模型中,两者都位于传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

    因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。UDP端口号指定有两种方式:由管理机构指定端口和动态绑定的方式。

    UDP

    在选择UDP作为传输协议时必须要谨慎。在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊天用的ICQ和QQ就是使用的UDP协议,广播和多播也可用UDP

    UDP没有TCP的“三次握手”,不能保证数据正确送达,但是可以建立多连接,速度快,资源消耗小

    2.服务端构建

    #Authors:xiaobei
    
    ######服务端构建#####
    
    import socket
    #创建一个socket
    server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    #绑定IP
    #IP隐藏,大家可以用自己IP,为安全考虑
    server.bind(("*****(IP)******",8080))
    print("服务器已启动")
    #进入事件循环
    while True:
        #接收数据
        data,clientAddress = server.recvfrom(1024)
        print("%s发来数据:%s"%(str(clientAddress),data.decode("utf-8")))
        #发送数据
        data = input("请输入响应数据:")
        server.sendto(data.encode("utf-8"),clientAddress)
        print("已发送")

    大家可以用自己IP,为安全考虑

    3.客户端的创建

    #Authors:xiaobei
    
    ######客户端创建######
    
    import socket
    #创建一个socket
    client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    while True:
        #发送数据
        data = input("请输入发送数据:")
        client.sendto(data.encode("utf-8"),("******(IP)******",8080))
        print("已发送")
        #接收数据
        answer = client.recv(1024).decode("utf-8")
        print("服务器响应数据",answer)

    4.本机IP查找

    打开cmd,输入“ipconfig",可以得到本机的IP。

    >>>ipconfig

  • 相关阅读:
    css3 transition和animation的区别与联系
    存成时间格式 strftime
    将不标准的时间。提取出来, 变成标准时间。
    将不标准的时间, 提取出来, 变成标准时间。
    当程序到这个时间点的时候,就可以执行。
    psycopg2 存储数据库使用
    json转csv
    把数据成从数据库读出来, 进过修改在放到数据库里面去
    百度地图爬取数据
    VMware Workstation 和win 贡献粘铁板
  • 原文地址:https://www.cnblogs.com/slz99/p/12527736.html
Copyright © 2020-2023  润新知