• Python socket实现处理多个连接


     
     socket实现处理多个连接

     

    实现处理多个连接

      使用whlie循环实现多个客户端,排队请求服务端

     

    循环监听端口发送信息(windos,Linux)

      1.Linux 系统如果客户端断开连接,会循环打印

      2.Windos 系统如果客户端断开连接,会报错中断 

      3.案例:在linux系统下实现

      4.需求:可以实现单个用户断开,并同过排队对服务端访问。

     

    客户端

    #客户端Linux系统下:输入命令通过服务端返回
    import socket
    
    #声明协议类型,同事生成socket连接对象
    client = socket.socket()
    
    #链接地址和端口,元组(本地,端口)
    client.connect(('localhost',6969))
    
    #使用input循环向服务端发送请求
    while True:
        msg = input(">>:").strip()
        if len(msg) == 0:continue
    
        #发送数据 b将字符串转为bys类型
        client.send(msg.encode("utf-8"))
    
        #接收服务器端的返回,需要声明收多少,默认1024字节
        data = client.recv(1024)
    
        #打印data是recv的data
        print("recv:",data)
    
    #关闭接口
    client.close()

    服务端

    #服务端Linux系统下:处理命令并返回
    import socket
    import os
    
    #声明类型,生成socket链接对象
    server = socket.socket()
    
    #监听接收端口元组(本地,端口),绑定要监听的端口
    server.bind(('localhost',6969))
    
    #1.监听
    #2.“5”最大监听数,允许多少人在排队
    server.listen(5)
    
    print("我要开始等待客户端了")
    
    #循环锁定访问客户端
    while True:
    
        #1.等待客户端 #会返回链接的标记位conn,与连接的地址
        #2.客户端同过conn,addr进行通话
        #3.conn就是客户端连接过来而在服务器端为其生成的一个连接实例
        conn,addr = server.accept()
    
        #查看标记位与IP地址
        print(conn,addr)
    
    
        print("客户端 他 进来了!")
    
        #循环处理客户端请求
        while True:
    
            #1.接收数据,1024字节
            #2.如果发不完会存在缓冲去,下次在发送。
            #3.缓冲区每次最多发32768字节
            #4.每个系统不同,超出数值会有限制。
            data = conn.recv(102400)
    
            #返回
            print(data)
    
            #Linux系统内可以判断是否为空。
            if not data:break
    
            #执行命令,赋值给变量
            res = os.popen(data).read()
    
            #返回一个值,返回res命令
            conn.send(res)
    
            #sendll就是循环send,用法发送大型文件。
            #conn.sendll(res)
    
    
    #关闭链接
    server.close()

     

     

     

  • 相关阅读:
    LeetCode 295. Find Median from Data Stream (堆)
    LeetCode 292. Nim Game(博弈论)
    《JavaScript 模式》读书笔记(4)— 函数2
    《JavaScript 模式》读书笔记(4)— 函数1
    《JavaScript 模式》读书笔记(3)— 字面量和构造函数3
    《JavaScript 模式》读书笔记(3)— 字面量和构造函数2
    《JavaScript 模式》读书笔记(3)— 字面量和构造函数1
    《JavaScript 模式》读书笔记(2)— 基本技巧3
    《JavaScript 模式》读书笔记(2)— 基本技巧2
    《JavaScript 模式》读书笔记(2)— 基本技巧1
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/7838422.html
Copyright © 2020-2023  润新知