博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
socket 基于udp实现远程执行命令
阅读量:4323 次
发布时间:2019-06-06

本文共 1404 字,大约阅读时间需要 4 分钟。

server.py

# socket 基于udp实现远程执行命令from socket import *import subprocessip_port = ('127.0.0.1', 8080)buffer_size = 1024udp_server = socket(AF_INET, SOCK_DGRAM)udp_server.bind(ip_port)while True:    cmd, addr = udp_server.recvfrom(buffer_size)    cmd = cmd.decode('utf-8')    print('收到客户端命令', cmd)    res = subprocess.Popen(cmd, shell=True,  # 第一个参数:命令字符串,第二个参数指定由shell处理                           stderr=subprocess.PIPE,  # 将基本的输入、输出及错误都放入管道                           stdin=subprocess.PIPE,  # 这些在管道里的信息都是字节形式,编码为utf-8                           stdout=subprocess.PIPE                           )    err = res.stderr.read()  # 定义一个err变量接收基本的错误信息    if err:  # 如果错误信息不为空        cmd_res = err  # 输出的结果为基本的错误信息    else:        cmd_res = res.stdout.read()  # 输出的结果为基本的输出信息    if not cmd_res:  # 有些命令无返回结果,需要进行判断        cmd_res = '该命令没有返回结果'.encode('gbk')    udp_server.sendto(cmd_res, addr)  # 向客户端发送执行的结果udp_server.close()

client.py

from socket import *ip_port = ('127.0.0.1', 8080)buffer_size = 1024udp_client = socket(AF_INET, SOCK_DGRAM)while True:    cmd = input('请输入命令').strip()    if not cmd: continue    if cmd == 'quit': break    cmd = cmd.encode('utf-8')    udp_client.sendto(cmd, ip_port)    cmd_res, addr = udp_client.recvfrom(buffer_size)  # 这里的值过小会接收不全服务端发来的信息    print('命令执行的结果是', cmd_res.decode('gbk'))  # windows系统默认编码为gbkudp_client.close()

 

转载于:https://www.cnblogs.com/dangrui0725/p/9483556.html

你可能感兴趣的文章
db2相关问题及解决方法
查看>>
三、CSS样式——背景
查看>>
UVa 12299 RMQ with Shifts(线段树)
查看>>
BZOJ 3224: Tyvj 1728 普通平衡树(BST)
查看>>
uml建模工具Rational Rose2003使用笔记1
查看>>
Multiple
查看>>
网页开发学习笔记八: css 盒子模型
查看>>
一道课本题目引发的思考的再补充
查看>>
9.25
查看>>
javascript函数
查看>>
java泛型中<?>和<T>有什么区别?
查看>>
Vue.js——60分钟组件快速入门
查看>>
logback配置方式
查看>>
laravel 数据库操作小例子
查看>>
javascript中对象属性的介绍
查看>>
3天CSS总结
查看>>
一周复习总结(一)第二周
查看>>
similarity 字符串编辑距离相似度匹配
查看>>
linux中什么是shell?
查看>>
谈谈MySql数据库锁
查看>>