zoukankan      html  css  js  c++  java
  • python socket简单实现SSH服务器端

    #server


    import socket,os
    server = socket.socket()
    server.bind(('localhost',9999))

    server.listen()

    while True:
    conn,addr=server.accept()
    while True:
    data = conn.recv(1024)
    if not data:
    print("客户端已经断开")
    break
    print("执行指令",data)
    cmd_res = os.popen(data.decode()).read()#接受字符串,执行结果是字符串
    print("before send",len(cmd_res))
    if len(cmd_res) == 0:
    cmd_res = "cmd has no output..."
    conn.send( str (len(cmd_res.encode())).encode("utf-8"))#先发大小给客户端
    conn.send(cmd_res.encode("utf-8"))
    print("semd done")

    server.close()

    #client


    import socket

    client = socket.socket()
    client.connect(("localhost",9999))

    while True:
    cmd = input(">>:").strip()
    if len(cmd) ==0 :continue
    client.send(cmd.encode('UTF-8'))
    cmd_res_size = client.recv(1024)#接受命令的长度
    print("命令结果大小:",cmd_res_size)
    received_size= 0
    received_data=b''
    while received_size< int(cmd_res_size.decode()):
    data = client.recv(1024)
    received_size +=len(data)#每次收到的有可能小于1024,所以必须用len判断
    received_data +=data

    else:
    print("cmd res receive done...",received_size)
    print(received_data.decode())


    client.close()
  • 相关阅读:
    lambda表达式
    Java的MongoDB驱动及读写策略
    MongDB主从复制、复制集
    PL/SQL练习
    MySQL数据库MyISAM和InnoDB存储引擎的比较(转)
    Java的垃圾回收概述
    springMVC源码浅析
    ActiveMQ使用总结
    常用的缓存产品比较
    Nginx+tomcat负载均衡并动静态分离
  • 原文地址:https://www.cnblogs.com/anhao-world/p/13420189.html
Copyright © 2011-2022 走看看