python网络编程

Posted Alive

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:远程执行系统命令返回结果

 

以上是关于python网络编程的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

python 有用的Python代码片段

Python 向 Postman 请求代码片段

VSCode自定义代码片段——JS中的面向对象编程

python [代码片段]一些有趣的代码#sort

VSCode自定义代码片段9——JS中的面向对象编程