• socket之 udp用法 dns 多道 进程


    1.udp协议

      定义:udp是用户数据报协议,是osi参考模型中一种无连接的传输层协议,提供简单不可靠信息传送服务
      用途:用于不要求可靠性,不要求分组顺序,每一次传输少量数据的传输,力求快

    2.udp通讯流程

      它与对讲机非常类似:只管发送不管对方是否接收到  甚至不关心对方在不在。

              买传呼机              

              固定对讲频道

              (省了listen与accept)

              收信号

              发信号

              买对讲及

              (省了connect)

              指定发送频率

              发信息

              收信息

      它与tcp的区别:由于udp是不可靠传输,不需要建立连接,不会粘包,单次数据包不能太大  

      注:udp的socket得 手动指定

    #================================================================= 客户端
    
    from socket import  *

    client = socket(AF_INET,SOCK_DGRAM)
    client.sendto("%Y-%m-%d".encode("utf-8"),("127.0.0.1",1688))
    data,addr = client.recvfrom(1472)
    print(data)
    # =================================================================服务器
    from socket import  *
    import time

    server = socket(AF_INET,SOCK_DGRAM)
    server.bind(("127.0.0.1",1688))

    while True:
    data,addr = server.recvfrom(1472)
    res = time.strftime(data.decode("utf-8"),time.localtime())
    server.sendto(res.encode("utf-8"),addr
     
    #模拟聊天
    ===================================================================服务器 from socket import * server = socket(AF_INET,SOCK_DGRAM) server.bind(("192.168.13.93",1688)) clients = {} while True: try: data,addr = server.recvfrom(1472) if addr[0] not in clients: clients[addr[0]] = addr try: print("%s说:%s" % (addr[0],data.decode("utf-8"))) except: print("编码有问题啊 .....") # 遍历所有客户端 转发消息给他们 for k,v in clients.items(): server.sendto(data,v) except Exception as e: # print(e) pass
    #=================================================================客户端1
    from
    socket import * client = socket(AF_INET,SOCK_DGRAM) while True: # msg = input("msg:").strip() client.sendto("client2".encode("utf-8"),("127.0.0.1",1688)) data,addr = client.recvfrom(1472) print(data)
    #=================================================================客户端2
    from
    socket import * client = socket(AF_INET,SOCK_DGRAM) while True: # msg = input("msg:").strip() client.sendto("client1".encode("utf-8"),("192.168.13.93",1688)) data,addr = client.recvfrom(1472) print(data)

    4.DNS服务器:

      定义:是域名解析服务器,是cs结构中的server端,   本质是数据库,存储的是ip与域名的对应关系

      用途:将域名转换为ip地址                要链接服务器,必须的知道ip

      由来:由于单独的ip不方便记忆,所以我们把ip和域名绑定到一块

      dns使用的是Udp协议, 因为传输的数据小,  但对速度要求高  一个dns服务器要服务很多计算机

    5.多进程的概念

      进程:指的是正在运行的程序,它来自于操作系统        没有操作系统就没有进程

      操作系统:是一套软件,用于控制硬件,隐藏丑陋的硬件细节,然后将无序的硬件竞争变得有序

          操作系统与普通软件的区别是操作系统受硬件保护,不能被用户修改,他是一个大型,长寿的程序:而普通软件你不用了可以自己写一个或换一个

      多道技术:为了提高计算机的利用率,有了它可以同一时间处理多个任务

      空间复用:把内存分割为不同区域,每个区域装入不同的程序

      时间复用:当一个程序执行io操作时,可以切换另一个程序来执行,但是得保存切换前的状态 ,以便恢复执行。 一个进程占用cpu时间过长也会切换,或者说被操作系统夺走cpu的执行权限

      注:并不是多道就一定提高了效率,eg如果多个任务都是纯计算,那么切换反而会降低效率只有遇到io操作时才能提高效率

     

     

  • 相关阅读:
    SonarQube Scanner的配置与使用简介
    MySQL 查看及修改数据库引擎
    react封装echarts仪表盘 吴小明
    优化(兼容):antd表格横向滚动在Safari浏览器上的bug 吴小明
    vue使用toast全局替换alert 吴小明
    实现一个页面操作不会整页刷新的网站,并且能在浏览器前进、后退时正确响应。给出你的技术实现方案 吴小明
    【前端优化】前端需要注意哪些 SEO 吴小明
    不可错过,RF之WebDriver功能配置
    Node获取路径的3种方法
    正则表达式中如何解决,提取固定区间中出现特征字符最近的内容
  • 原文地址:https://www.cnblogs.com/wyf20190411-/p/10951628.html
Copyright © 2020-2023  润新知