zoukankan      html  css  js  c++  java
  • Python模拟服务端

    本机服务端

    import socket
    
    # 获取到socket
    sk = socket.socket()
    
    # 获取到地址  ip 和 端口号
    address = ('127.0.0.1', 8001)
    
    # 绑定 地址
    sk.bind(address)
    
    # 设置 client端的 连接、排队 人数
    sk.listen(3)
    
    print('server waiting...')
    
    while True:
        # 阻塞  等待 client连接server
        conn, address = sk.accept()
        print(address)
    
    # 发送数据到client端
        while True:
            # 接收 client端的 数据
            client_data = conn.recv(1024)
            print(str(client_data, "utf8"))
    
            if not client_data: break
    
            inp = input('>>>')
            conn.send(bytes(inp, encoding="utf-8"))
    # conn.sendall(bytes('服务器关闭', encoding="utf-8"))
    
    conn.close()  # 该客户关闭
    # sk.close()  # 服务器关闭 , 此通道不会关闭

    跨电脑服务端

    import subprocess
    import socket
    
    # 获取到socket
    sk = socket.socket()
    
    # 获取到地址  ip 和 端口号
    address = ('127.0.0.1', 8001)
    
    # 绑定 地址
    sk.bind(address)
    
    # 设置 client端的 连接、排队 人数
    sk.listen(3)
    
    print('server waiting...')
    
    while True:
        # 阻塞  等待 client连接server
        conn, address = sk.accept()
        print(address)
    
        # 发送数据到client端
        while True:
            # 接收 client端的 数据
            try:
                client_data = conn.recv(1024)
            except Exception as e:
                break
    
            # 判断数据是够是空
            if not client_data: break
    
            print(str(client_data, "utf8"))
    
            # 获取到结果
            obj = subprocess.Popen(str(client_data, 'utf8'), shell=True, stdout=subprocess.PIPE)
            # 将结果读取出来
            cmd_result = obj.stdout.read()
    
            result_len = bytes(str(len(cmd_result)), 'utf8')
            conn.sendall(result_len)  # 粘包问题
            conn.recv(1024) # 隔断,解决粘包方法
            # 发送数据到client端
            conn.sendall(cmd_result)
    
    conn.close()  # 该客户关闭
    # sk.close()  # 服务器关闭 , 此通道不会关闭
    做自己的太阳,成为别人的光!
  • 相关阅读:
    无法将类型“XXX”隐式转换为“XXX[]”(Cannot implicitly convert type 'XXX' to 'XXX[]')
    VS2010验证时出错。HRESULT = '8000000A'
    Linux Command Tips
    RealVNC 使用手册
    PL/SQL Developer自动补全SQL技巧
    Install dnsutils(dig, nslookup, host) On iPhone
    asp.net压缩图片
    Discuz论坛密码加密方式详解
    三种SQL分页法效率分析
    Mysql数据库服务器配置文件/etc/my.cnf的详细配置
  • 原文地址:https://www.cnblogs.com/botaoli/p/15311236.html
Copyright © 2011-2022 走看看