zoukankan      html  css  js  c++  java
  • socket_ftp(ftp有点残)

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    #  import socket,os,json
    # import sys
    # BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#获取相对路径转为绝对路径赋于变量
    # sys.path.append(BASE_DIR)#增加环境变量
    #
    # from  core.server_class import listen_func
    # s=socket.socket()#定义
    # s.bind(('localhost',9000))#绑定要监听的 端口
    # s.listen(5)#对列5
    # print('正在监听中')
    # listen_func(s)
    
    import socket,struct,json,subprocess
    
    phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    phone.bind(('127.0.0.1',8090))
    phone.listen(10)
    
    while True:
        print('starting listen 127.0.0.1:8090')
        conn,addr=phone.accept()
        print(addr)
        while True:
            print('begin receiving message')
            cmd=conn.recv(1024)
            if not cmd:break
            print('cmd: %s' %cmd)
            res=subprocess.Popen(cmd.decode('utf-8'),
                                 shell=True,
                                 stdout=subprocess.PIPE,
                                 stderr=subprocess.PIPE)
            #错误信息
            err=res.stderr.read()
            #打印错误信息
            print(err)
            if err:
                back_msg=err
            else:
                back_msg=res.stdout.read()
            ##先发back_msg的长度
            conn.send(struct.pack('i',len(back_msg)))
            ##在发真实的内容
            conn.sendall(back_msg)
        conn.close()
    
    
    
    client
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import socket,time,struct
    ftp_c=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    res=ftp_c.connect_ex(('127.0.0.1',8090))
    
    while True:
        msg=input('>>>:').strip()
        if len(msg) == 0:continue
        if msg == 'quit'or msg == 'exit':break
        ftp_c.send(msg.encode('utf-8'))
    
        l=ftp_c.recv(4)
        x=struct.unpack('i',l)[0]
        print(type(x),x)
        r_s=0
        data=b''
        while r_s < x:
            r_d=ftp_c.recv(1024)
            data+=r_d
            r_s+=len(r_d)
        print(data.decode('gbk'))
  • 相关阅读:
    进军装饰器2/3
    进军装饰器1/3
    购物车
    多级菜单(高效版)
    工资管理系统
    多级菜单(低效版)
    用户登录程序
    Accessibility辅助功能--一念天堂,一念地狱
    使用FragmentTabHost+TabLayout+ViewPager实现双层嵌套Tab
    android性能优化练习:过度绘制
  • 原文地址:https://www.cnblogs.com/Bruce-yin/p/7072724.html
Copyright © 2011-2022 走看看