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

  • 相关阅读:
    Spring Security简单的登陆验证授权
    汽车之家汽车品牌Logo信息抓取 DotnetSpider实战[三]
    汽车之家店铺商品详情数据抓取 DotnetSpider实战[二]
    如何解决 MySQL报错:ERROR 1045 (28000)
    linux三剑客grep|sed|awk实践
    VMware中Linux启动时***Host SMBus controller not enabled的解决方法
    selenium初探:WebDriverException解决方法探索(以Chrome浏览器|IE浏览器|Edge浏览器为例)
    Windows10 64位 Python2.7 Matplotlib安装
    关于 水平制表符 Horizontal Tab (TAB)
    leetcode每日解题思路 221 Maximal Square
  • 原文地址:https://www.cnblogs.com/slz99/p/12527736.html
Copyright © 2011-2022 走看看