zoukankan      html  css  js  c++  java
  • 第67天python学习基于tcp实例化实现远程执行命令

    使用管道实现2个程序之间通信:例如:QQ  和微信通信

    服务端:

    from socket import *
    import subprocess #管道模块,不同程序之间通信
    ip_port="127.0.0.1",8080
    back_log=5
    buffer_size=1024

    tcp_server=socket(AF_INET,SOCK_STREAM)
    tcp_server.bind(ip_port)
    tcp_server.listen(5)
    while True:
    conn,addr=tcp_server.accept()
    print("新客户端链接",addr)
    while True:
    try:
    cnd=conn.recv(buffer_size)
    if not cnd :break
    print("收到客户端的命令",cnd)

    #执行命令得到运行cnd_res
    res=subprocess.Popen(cnd.decode("utf-8"),shell=True, #把信息封装到管道里面
    stderr=subprocess.PIPE, #把错误的信息搞到官道里面
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE)
    err=res.stderr.read()
    if err:
    cnd_res=err
    else:
    cnd_res=res.stdout.read() ##把运行正确的信息从官道里面读出来

    #把正确运行好的命令发给客户端
    conn.send(cnd_res)
    except Exception as e:
    print(e)
    break
    conn.close()

    客户端:

    from socket import *
    ip_port="127.0.0.1",8080
    back_log=5
    buffer_size=1024

    tcp_clint=socket(AF_INET,SOCK_STREAM)
    tcp_clint.connect(ip_port)
    while True:
    cnd=input(">>>:").strip()
    if not cnd:continue #不能是空
    if cnd=="quit":continue #按退出,允许退出
    tcp_clint.send(cnd.encode("utf-8"))
    cnd_res=tcp_clint.recv(buffer_size)
    print("命令的执行结果是:",cnd_res.decode("gbk"))#服务器发送过来没有指定编码所有使用的是系统编码,Windows默认编码是gbk
    tcp_clint.close()
  • 相关阅读:
    第十七节--Hystrix服务熔断
    第十六节--Hystrix之服务降级全局配置
    第十五节--Hystrix之服务降级
    第十四节--Hystrix断路器
    第十三节--OpenFeign服务接口调用
    第十二节--Ribbon
    第十一节--三个注册中心对比
    uni-app开发小说阅读器
    H5+微信朋友、朋友圈分享
    uni-app开发音乐电子书库
  • 原文地址:https://www.cnblogs.com/jianchixuexu/p/11875431.html
Copyright © 2011-2022 走看看