zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    开源项目
    [Accessibility] Missing contentDescription attribute on image [可取行]失踪contentDescription属性图像
    Android 布局 中实现适应屏幕大小及组件滚动
    EF 错误记录
    EasyUI 加载时需要显示和隐藏 panel(面板)内容破版问题
    IE 报表缩放后页面破版
    VS 2017 引入nuget 问题
    SSRS 报表显示页面 asp net session丢失或者找不到 asp net session has expired or could not be found()
    log4net 配置
    网站
  • 原文地址:https://www.cnblogs.com/slz99/p/12527736.html
Copyright © 2011-2022 走看看