zoukankan      html  css  js  c++  java
  • socket远程执行命令

    server类
    
    import socket
    import subprocess
    
    sk = socket.socket()  #创建socket
    
    #添加地址bind绑定
    address = ("127.0.0.1",9595)
    sk.bind(address)
    
    #支持多少人
    sk.listen(2)
    
    #接收客户端信息
    while True:
        conn,addr = sk.accept()
        print(addr,"这个位置是下一次另一个客户端打开后能自动接收")
        while True:
            try:
                cr = conn.recv(1024)
            except Exception as e:            #如果直接点击客户端直接点击
                print("jimao------",e)
                break
            # print(cr, "--nn------------")  # 判断客户端停止后返回值
            if not cr:break
    
            print(cr, "--------------")  # 判断客户端停止后返回值
            data = str(cr, "utf8")
            # print(str(cr))   #这个不能接收中文,只能接收字母数字
    
            # 发送信息
    
            #stdout 标准输出   PIPE 管道     Popen 打开进程文件指针
            #stdout=subprocess.PIPE子线程通过管道输出到主线程
    
            obj = subprocess.Popen(data,shell=True,stdout=subprocess.PIPE)
            obj_read = obj.stdout.read()   #接收指令data,再格式化输出
            print("iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",type(obj))
    
            #计算长度,传递到客户端来判断客户端是否继续接收
            len_write = len(obj_read)
    
            conn.sendall(bytes(str(len_write),"utf8"))  #发送接收到的指令长度发送到客户端
    
            conn.sendall(obj_read)
    clinet类
    
    import socket
    sk = socket.socket() #创建socket对象
    
    #连接服务端
    address = ("127.0.0.1",9595)
    sk.connect(address)
    #发送信息到服务端
    while True:
        inp = input("这是客户端:")
        if inp == "88":
            exit()
        else:
            sk.send(bytes(inp,"utf8"))
    
        #接收信息
        sr = sk.recv(1024)  #
        print("00000000000000",type(sr))
        sr_len = int(str(sr,"utf8"))  #把传过来的byte长度转换成int型
        print("-----------",sr_len,"---",sr)
        if sr:
            num = bytes() #创建一个
            #接收的长度和总和和传过来的长短一样时就返回
            while len(num) != sr_len:
                # 再次接收文件
                sk_len = sk.recv(1024)  # 第二次接收byte型类型
                num += sk_len  # 把第二次接收的byte类型写进num中
                # print(str(sk_len,"gbk"),"
            print(str(num, "gbk"))
    
        else:
            break
  • 相关阅读:
    Windows Phone云应用开发实践之(三)——OData
    Windows Phone 云应用开发实践之(二)Windows Live SDK
    使用Windows Azure Web Sites构建托管的WEB应用
    Windows Phone Mango开发实践——GB2312编码转换
    概念 : 用户>角色>权限 的管理(RoleBased Access Control)
    angular uirouter 正则
    过程 : 概念 : 结构 jobbox jobPost
    css 居中,中央
    javascript : detect at the end of bottom
    设计理念 : popup login 在前后台
  • 原文地址:https://www.cnblogs.com/TKOPython/p/12407746.html
Copyright © 2011-2022 走看看