zoukankan      html  css  js  c++  java
  • python网络编程

    subprocess模块

    区别:subprocess模块与os.system(cmd)或os.popen(cmd)模块的区别是有返回值,会将报错信息接收

    语法:ret_obj = subprocess(cmd,               # 预在dos中执行的系统命令

                shell=True,            #  表示在Windows控制台

                stdout=subprocess.PIPE,       #  标准输出管道

                stderr=subprocess.PIPE)       # 标准错误管道

    结果:执行完成之后,返回的是一个对象

    对结果的读:msg = ret_obj.stdout.read()    得到的是一个bytes类型,因管道的机制是只读一次,读完后内存中就没有了,故需要用变量提前保存后,再发送

    可视化需解码:msg = msg.decode('gbk')    因Windows默认位gbk编码

    =====》

    通过远程让主机执行相关命名,并将结果返回:

     1 import socket
     2 import subprocess
     3 
     4 sk = socket.socket()
     5 sk.bind(('127.0.0.1', 9999))
     6 sk.listen()
     7 conn, add = sk.accept()
     8 
     9 while 1:
    10     msg_cmd = conn.recv(1024)
    11     print(msg_cmd)
    12     ret = subprocess.Popen(msg_cmd.decode('utf-8'), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    13     r = ret.stdout.read()
    14     print(r.decode('gbk'))
    15     conn.send(r)  # windows 默认gbk,返回的是gbk字符串,故需解码
    server:远程执行系统命令返回结果
     1 import socket
     2 
     3 sk = socket.socket()
     4 sk.connect(('127.0.0.1', 9999))
     5 
     6 while 1:
     7     cmd = input('>>>>:')
     8     sk.send(cmd.encode('utf-8'))
     9     msg_r = sk.recv(2048)
    10     print(msg_r.decode('gbk'))
    11 sk.close()
    client:远程执行系统命令返回结果
  • 相关阅读:
    Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset
    刷卡客户端实现
    winform TreeView 节点选择
    flask入门
    redis介绍及常见问题总结
    微信消息推送
    redis介绍及在购物车项目中的应用,用户认证
    django实现支付宝支付
    nginx+uWSGI+django部署web服务器
    linux上部署redis实现与Python上的redis交互(有坑)
  • 原文地址:https://www.cnblogs.com/sunxiuwen/p/9347964.html
Copyright © 2011-2022 走看看