zoukankan      html  css  js  c++  java
  • python之模仿ssh服务

    小白练习笔记

    import socket
    import os
    server = socket.socket()      #实例化
    server.bind(('localhost',9999))  #绑定ip及端口

    server.listen()          #监听

    while True:              #循环监听服务,接收用户来访
    conn,addr = server.accept()  #实例化来访用户
    print('new conn:',addr)

    while True:            #持续监听用户的来访指令
    print('等待新的指令')
    data = conn.recv(1024)    #接收缓冲区大小
    if not data:          #防止空信息
    print('客户端已断开')
    break
    print('执行指令:',data)    
    cmd_res = os.popen(data.decode()).read()    #存储指令返回结果
    print('before send', len(cmd_res.encode('utf-8')))    
    if len(cmd_res) == 0:              #防止无返回信息,客户端卡死
    cmd_res = 'cmd has no output....'
    conn.send(str(len(cmd_res.encode('utf-8'))).encode('utf-8'))    #通知客户端返回信息长度,注意编码,汉字占3字节,如果不编码将导致字节数不一致
         client_ack = conn.recv(1024)       #socket服务两次发送数据之间如果没有间隔,有可能在缓冲区合并为一条发送。这将导致客户端报错,在两次之间加一次接收确认,将socket粘包有效分割开
    conn.send(cmd_res.encode('utf-8'))      #发送信息,将信息转换成字节码
    print('send done')    
    server.close()
  • 相关阅读:
    从Android源码修改cpu信息
    lintcode-->翻转字符串
    lintcode-->哈希函数
    PCP架构设计
    PCP项目立项
    linux下wc功能的简单实现
    goahead3.6.3就基本使用(后台上传信息到html页面),高手请忽略
    四则运算生成器
    快速看完软件工程教材后,我的疑惑
    软件工程学习
  • 原文地址:https://www.cnblogs.com/kcrist/p/9647344.html
Copyright © 2011-2022 走看看