zoukankan      html  css  js  c++  java
  • day33

    今日内容:

      1、关于UDP传输的模拟实现

      2、使用socketserver模块实现TCP传输的并发操作

      3、进程理论的介绍

    1、关于UDP传输的模拟实现

    模拟UDP传输与之前的模拟TCP传输大致相同

    不同之处是:

    TCP:socket(AF_INET,SOCK_STREAM)

    UDP:socket(AF_INET,SOCK_DGRAM)

    然后就是

    UDP:传输时用的时sendto方法,接受是用recvfrom方法

    两者传输效果也有明显的不同,UDP相对于TCP是一种不可靠的传输,所以它传输时可以并发(实际上并不是真正的并发),同时其传输最大限制为512bytes,一旦超过就会有很大概率丢包

    服务器:
    from _socket import *
    
    sever = socket(AF_INET,SOCK_DGRAM)
    sever.bind(('127.0.0.1',8081))
    while True:
        data,client_address = sever.recvfrom(1024)
        print(data.decode('utf-8'))
        sever.sendto(data.upper(),client_address)
    
    客户端:
    from _socket import *
    
    client = socket(AF_INET,SOCK_DGRAM)
    while True:
        client.sendto('hello'.encode('utf-8'),('127.0.0.1',8081))
        data,sever_address=client.recvfrom(1024)
        print(data.decode('utf-8'))
    

    2、使用socketserver模块实现TCP传输的并发操作

    使用socketserver模块实现并发的代码内容是将传输代码放在一个类中,这个类中必须有一个handle方法,handle方法的内容就是传输的方法,在下面定义的是这个方法的对象每次有一个客户端接入,就会产生一个对象

    客户端:
    import socket PC= socket.socket(socket.AF_INET,socket.SOCK_STREAM) ip = '127.0.0.1' port = 8011 PC.connect((ip,port)) while True: m = input('请输入:').strip() PC.send(m.encode('utf-8')) data = PC.recv(1024) print(data.decode('utf-8'))
    服务器:
    import socketserver
    class MyTCPhandle(socketserver.BaseRequestHandler):
        def handle(self):
            while True:
                try:
                    data = self.request.recv(1024)
                    if len(data) == 0:break
                    print(data.decode('utf-8'))
                    self.request.send(data.upper())
                except ConnectionResetError:
                    break
            self.request.close()
    
    if __name__ == '__main__':
        sever = socketserver.ThreadingTCPServer(('127.0.0.1',8081),MyTCPhandle)
        sever.serve_forever()

    3、进程理论的介绍

    什么是进程?
        进程就是指程序在运行/执行的过程,进程是用来描述程序运行过程的虚拟概念
        进程vs程序
        程序:就是一堆代码
        进程:就是程序执行的过程
        进程的概念起源于操作系统,进程是操作系统最核心的概念,操作系统其他的概念都是围绕进程来
        什么是操作系统?
            操作系统就是用来管理/协调/控制计算机硬件资源和应用软件资源的一段控制程序
            有两大功能:
                1、将复杂的硬件操作封装成简单的接口给应用程序或者用户去使用
                2、将多个进程对硬件的竞争变得有序
       
        操作系统发展史
            并发:多个任务看起来是同时执行的
            串行:一个任务完完整整的运行完毕,才能运行下一个任务
       
        多道技术:(复用=》共享/共用)
            1、空间上的复用:多个任务复用内存的空间
            2、时间上的复用:多个任务复用cpu的时间
                1、一个任务占用cpu的时间过长会被操作系统强行剥夺走cpu的执行权限,比起串行执行反而会降低效率
                2、一个任务遇到io操作会被操作系统强行剥夺走cpu的执行权限,比起串行执行会提高效率
    为何用进程?
        实现并发
  • 相关阅读:
    购买 Linux VPS 服务器后简单的安全设置
    VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试
    Polysh实现多服务器批量执行shell
    第十一周编程总结
    第十周作业
    第九周编程总结修改
    第九周编程总结
    第八周编程总结
    第7周编程总结
    第七周编程总结啊
  • 原文地址:https://www.cnblogs.com/yaoxiaofeng/p/9588231.html
Copyright © 2011-2022 走看看