前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >九、python学习笔记-网络编程-socketserver练习

九、python学习笔记-网络编程-socketserver练习

原创
作者头像
堕落飞鸟
发布2022-01-16 08:51:22
8280
发布2022-01-16 08:51:22
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏

socketserver版远程执行命令client端.

代码语言:javascript
复制
import socket

sk = socket.socket()
address = ("127.0.0.1", 8088)
sk.connect(address)

while True:
    cmd = input("请输入命令:")
    sk.sendall(bytes(cmd, encoding='utf8'))
    if cmd == 'exit':
        break
    len_result = sk.recv(1024)
    len_result = int(str(len_result, encoding='utf8'))
    sk.sendall(bytes("ok", encoding='utf8'))
    result = bytes()
    while len(result) != len_result:
        date = sk.recv(1024)
        result += date
    print(str(result, encoding='gbk'))
sk.close()

socketserver版远程执行命令server端

代码语言:javascript
复制
import socketserver
import subprocess


class Myserver(socketserver.BaseRequestHandler):

    def handle(self):
        print("服务器端启动")
        conn = self.request
        print(conn)
        client_address = self.client_address
        while True:
            try:
                cmd = str(conn.recv(1024), encoding='utf8')
            except Exception as e:
                print(e)
                break
            if cmd == 'exit':
                break
            print("客户端:{},命令:{}".format(client_address, cmd))
            cmd_result = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
            cmd_result_stdout = cmd_result.stdout.read()
            cmd_result_stderr = cmd_result.stderr.read()
            if len(cmd_result_stdout) == 0:
                result = cmd_result_stderr
            else:
                result = cmd_result_stdout
            conn.sendall(bytes(str(len(result)), encoding='utf8'))
            conn.recv(1024)
            conn.sendall(result)
        conn.close()


if __name__ == '__main__':
    server = socketserver.ThreadingTCPServer(('127.0.0.1', 8088), Myserver)
    server.serve_forever()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com