码迷,mamicode.com
首页 > 编程语言 > 详细

python网络编程

时间:2018-12-27 13:15:25      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:bin   表示   gif   win   soc   std   命名   stdout   cep   

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:远程执行系统命令返回结果

 

python网络编程

标签:bin   表示   gif   win   soc   std   命名   stdout   cep   

原文地址:https://www.cnblogs.com/sunxiuwen/p/9347964.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!