zoukankan      html  css  js  c++  java
  • 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操作时才能提高效率

     

     

  • 相关阅读:
    Python升级3.6 强力Django+Xadmin打造在线教育平台
    第六模块:WEB框架开发 第1章·Django框架开发1~50
    阿里云主机(ECS)与CentOS7实战
    Django入门与实战
    第五模块:WEB开发基础 第2章·JavaScript基础
    第五模块:WEB开发基础 第1章·HTML&CSS基础
    第四模块:网络编程进阶&数据库开发 第2章·MySQL数据库开发
    阿里云ECS云服务器CentOS7.4下安装MySQL5.7.13、JDK1.7.80、Mycat1.6.5、Redis3.2.10、Nginx1.14.0以及Tomcat7.0.72
    《百词斩·象形9000》第一册(上) 符号Symbol 1
    第三模块:面向对象&网络编程基础 第2章 网络编程
  • 原文地址:https://www.cnblogs.com/wyf20190411-/p/10951628.html
Copyright © 2011-2022 走看看