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()  # 服务器关闭 , 此通道不会关闭
    做自己的太阳,成为别人的光!
  • 相关阅读:
    PAT——1069. 微博转发抽奖
    PAT——1068. 万绿丛中一点红
    PAT——1066. 图像过滤
    PAT——1065. 单身狗
    PAT——1064. 朋友数
    PAT——1063. 计算谱半径
    PAT——1062. 最简分数
    PAT——1061. 判断题
    PAT——1060. 爱丁顿数
    PAT——1059. C语言竞赛
  • 原文地址:https://www.cnblogs.com/botaoli/p/15311236.html
Copyright © 2011-2022 走看看