• day 28


    一.基于udp协议的套接字

    服务端:
    
    from socket import *
    import  subprocess
    server = socket(AF_INET, SOCK_DGRAM)
    server.bind(('127.0.0.1', 8081))
    while True:
        data, client_addr = server.recvfrom(1024)
        print("客户端发来的消息:",data.decode("utf-8"))
        mag =input("回复>>>").strip()
        server.recvfrom(mag.encode("utf-8"),client_addr)
    
    客户端:
    from socket import *
    
    client=socket(AF_INET,SOCK_DGRAM)
    while True:
        msg=input("发送>>>:").strip()
        client.sendto(msg.encode("utf-8"),("127.0.0.1",8081))
        data,server=client.recvfrom(1024)
        # print("收到服务端的信息:",data.decode("utf-8"))
        print(data.decode("gbk"))

    二.socketserver模块的使用:

    1.基于tcp协议套接字的使用:

    服务端:
    
    import socketserver
    
    
    # 自定义用来处理通信循环
    class MyTCPhandler(socketserver.BaseRequestHandler):
        def handle(self):
            while True:
                try:
                    data = self.request.recv(1024)
                    # print("客户端发来的消息为:", data.decode("utf-8"))
                    # msg = input("回复>>>>").strip()
                    self.request.send(data.upper())
                except ConnectionResetError:
                    break
    
            self.request.close()
    
    
    if __name__ == "__main__":
        server = socketserver.ThreadingTCPServer(("127.0.0.1", 8081), MyTCPhandler)
        server.serve_forever()
    
    
    客户端:
    
    from socket import *
    
    client=socket(AF_INET,SOCK_STREAM)
    client.connect(("127.0.0.1",8081))
    while True:
        # msg=input("发送>>>:").strip()
        client.send(b"hello")
        data= client.recv(1024)
        print("收到服务端的信息:",data.decode("utf-8"))
        #  print(data.decode("gbk"))

    2.基于udp协议的套接字的使用

    服务端:
    
    import socketserver
    
    
    # 自定义用来处理通信循环
    class MyUDPhandler(socketserver.BaseRequestHandler):
        def handle(self):
            while True:
                try:
                    data,sock = self.request
                    sock.sendto(data.upper(),self.client_address)
                    # print("客户端发来的消息为:", data.decode("utf-8"))
                    # msg = input("回复>>>>").strip()
    
                    # self.request.send(data.upper())
                except ConnectionResetError:
                    break
    
            self.request.close()
    
    
    if __name__ == "__main__":
        server = socketserver.ThreadingUDPServer(("127.0.0.1", 8081), MyUDPhandler)
        server.serve_forever()
    
    
    客户端:
    from socket import *
    
    client=socket(AF_INET,SOCK_DGRAM)
    while True:
        # msg=input("发送>>>:").strip()
        client.sendto(b"hello",("127.0.0.1",8081))
        data,server=client.recvfrom(1024)
        print("收到服务端的信息:",data.decode("utf-8"))
        # print(data.decode("gbk"))

    三.进程:

    1.进程:指的是正在运行/执行的程序,是用来描述程序执行过程中的虚拟的概念

    2.进程Vs程序
    程序:是一堆代码
    进程:是程序执行的一个过程

    3.进程的概念起源于操作系统,是操作系统最核心的概念,操作系统的其他概念都是围绕进程来的

    4.操作系统:是一个具有管理/控制/协调,计算机硬件资源与软件资源的一段控制程序
    操作系统的两个功能:
    1.将复杂的硬件操作封装成简单的接口,提供给应用程序和用户使用
    2.将多个进程对硬件的竞争变的有序化

    5.操作系统发展史:
    1.并发:多个任务看起来同时运行
    2.串发:一个任务完完整整的运行完毕,才能够运行下一个任务

    6.多道技术:(复用>>共享/共用)
    1.空间上的复用:对个任务复用内存空间 io设备(存贮设备)
    2.时间上的复用:多个任务复用CPU时间 计算设备
    1.一个任务占用CPU时间过长会被操作系统强行剥夺走CPU的执行权力>>>比串行执行反而会降低效率
    2.一个任务遇到io操作也会被操作系统强行剥夺走CPU的执行权力>>>比串行执行提升效率

    :

  • 相关阅读:
    用Visual Studio2010 编译 C++文件"hello world”
    hdu 1010 Tempter of the Bone(dfs+奇偶剪枝)
    最长子串(动态规划)
    C++中,访问字符串的三种方法
    POJ3260:The Fewest Coins(混合背包)
    如何做好基层技术管理工作?
    UVa10651(记忆化搜索)
    <Win32_5>深入浅出Win32的计时器
    【转载】一步一步写算法(之hash表)
    C可变参数函数 实现
  • 原文地址:https://www.cnblogs.com/jxl123/p/9585206.html
Copyright © 2020-2023  润新知