日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python socketserver实现服务器端执行命令 上传文件 断点续传

發布時間:2025/5/22 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python socketserver实现服务器端执行命令 上传文件 断点续传 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 基于socketserver在服務器端實現執行cmd命令和上傳文件(斷點續傳) 2 3 #server: 4 5 #!/usr/bin/env python 6 # -*- coding:utf-8 -*- 7 import subprocess 8 import socketserver 9 import os 10 11 BASEDIR = os.path.dirname((os.path.abspath(__file__))) 12 13 class Myserver(socketserver.BaseRequestHandler): 14 15 def handle(self): 16 while True: 17 conn = self.request 18 conn.sendall(bytes('連接成功', encoding='utf8')) 19 while True: 20 cmd_or_load = str(conn.recv(1024), encoding='utf8') 21 if not cmd_or_load:break 22 if cmd_or_load[0:3] == 'cmd': 23 cmd_name, cmd_str = cmd_or_load.split('|') 24 result = subprocess.getoutput(cmd_str) 25 result_lenth = len(result) 26 conn.sendall(bytes(str(result_lenth), encoding='utf8')) 27 conn.recv(1024) #解決粘包 28 conn.sendall(bytes(result, encoding='utf8')) 29 elif cmd_or_load[0:4] == 'load': 30 load_name, file_name, s_path, file_byte_size = cmd_or_load.split('|') 31 file_bytes_size = int(file_byte_size) 32 # file_path = os.path.join(BASEDIR, s_path, file_name) 33 file_path = BASEDIR+s_path+'\\'+file_name 34 35 has_rec = 0 36 37 if os.path.exists(file_path): #2001文件存在 2011 繼續上傳 2012重新上傳 38 conn.sendall(bytes('2001', encoding='utf8')) 39 if str(conn.recv(1024), encoding='utf8') == '2011': 40 has_file_size = os.stat(file_path).st_size 41 has_rec += has_file_size 42 conn.sendall(bytes(str(has_file_size), encoding='utf8')) 43 f = open(file_path, 'ab') 44 elif str(conn.recv(1024)) == '2012': 45 f = open(file_path, 'wb') 46 else: 47 conn.sendall(bytes('2002', encoding='utf8')) 48 f = open(file_path, 'wb') 49 50 data_info = bytes() 51 while has_rec<file_bytes_size: 52 try: 53 data = conn.recv(1024) 54 if not data: 55 raise Exception 56 except Exception: 57 break 58 has_rec += len(data) 59 f.write(data) 60 f.close() 61 print('寫入成功') 62 63 64 if __name__ == '__main__': 65 server = socketserver.ThreadingTCPServer(('127.0.0.1', 8009), Myserver) 66 server.serve_forever()
67 #---------------------------------------------------------------- 68 #clinet: 69 70 #!/usr/bin/env python 71 # -*- coding:utf-8 -*- 72 import socket 73 import os 74 75 76 sk = socket.socket() 77 sk.connect(('127.0.0.1', 8009)) 78 79 rec_str = str(sk.recv(1024), encoding='utf8') 80 print(rec_str) 81 82 83 def cmd(): 84 inp = input('請輸入命令>>>') 85 comm = 'cmd|' 86 inp_bytes = bytes(comm + inp, encoding='utf8') 87 sk.sendall(inp_bytes) 88 cmd_lenth = int(str(sk.recv(1024), encoding='utf8')) 89 sk.sendall(bytes('1111', encoding='utf8')) # 解決粘包 90 has_recv = 0 91 cmd_info = bytes() 92 while has_recv<cmd_lenth: 93 fetch_info = sk.recv(1024) 94 has_recv += 1024 95 cmd_info += fetch_info 96 cmd_info_str = str(cmd_info ,encoding='utf8') 97 print(cmd_info_str) 98 99 def load(): 100 inp = input('請輸入上傳文件文件名 服務器保存路徑>>>')#input:1.zip|\home 101 loadd = 'load|' 102 file_name = inp.split('|', 1)[0] 103 file_byte_size = os.stat(file_name).st_size 104 file_bytes_size = str(file_byte_size) 105 sk.sendall(bytes(loadd + inp + '|' + file_bytes_size, encoding='utf8')) 106 107 is_or_not = str(sk.recv(1024), encoding='utf8') 108 has_sent = 0 109 110 if is_or_not == '2001': 111 inp = input('文件已存在\n1、繼續上傳 2、重新上傳>>>') 112 if inp == '1': 113 sk.sendall(bytes('2011', encoding='utf8')) 114 has_sent_size = int(str(sk.recv(1024), encoding='utf8')) 115 if has_sent_size == file_byte_size: 116 print('文件已全部發送') 117 else: 118 print('已經發送%d字節'%has_sent_size) 119 has_sent += has_sent_size 120 elif inp == '2': #2001文件存在 2011 繼續上傳 2012 重新上傳 121 sk.sendall(bytes('2012', encoding='utf8')) 122 elif is_or_not == '2002': 123 pass 124 125 f = open(file_name, 'rb') 126 f.seek(has_sent) 127 while has_sent<file_byte_size: 128 data = f.read(1024) 129 sk.sendall(data) 130 has_sent += len(data) 131 print('\r已發送{}字節 共{}字節'.format(has_sent, file_byte_size), end='') 132 f.close() 133 print('\n發送成功') 134 135 136 while True: 137 inp = input('1、執行命令 2、上傳文件>>>') 138 if inp == '1': 139 cmd() 140 elif inp == '2': 141 load()

?

轉載于:https://www.cnblogs.com/minchen/p/8003755.html

總結

以上是生活随笔為你收集整理的python socketserver实现服务器端执行命令 上传文件 断点续传的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成年人视频在线免费看 | 亚洲精品国偷拍自产在线观看蜜桃 | 夜夜春夜夜爽 | 96人xxxxxxxxx69 | www.国产视频| av永久免费观看 | 中国av免费看 | 图片区小说区视频区 | yw在线观看| 黄色av片三级三级三级免费看 | 91在线看片 | 在线播放亚洲精品 | 一区黄色| 一区二区精品久久 | 色综合一区 | av动漫天堂 | 国产精品色婷婷 | 风间由美在线观看 | 国产高潮流白浆喷水视频 | 高清三区 | 欧美日韩一区二区视频观看 | 国产伦精品免费视频 | 最新黄色网页 | 一区国产在线 | www.精品久久 | 欧美三级久久久 | 久久久久久久久免费看无码 | 精品国产一区二区三区四区精华 | 黄色91免费版 | 粉嫩aⅴ一区二区三区 | 欧美一区二区三区免 | 91无毒不卡 | 李华月全部毛片 | 啪啪免费小视频 | 亚洲一区二区三区视频在线 | 亚洲国产精品视频在线观看 | 亚洲欧美日本一区二区三区 | 成人福利视频在线 | 能看毛片的网站 | 一区二区三区国产在线观看 | 一线毛片 | 亚洲第三色 | 国产字幕在线观看 | 视频黄页在线观看 | 中日韩午夜理伦电影免费 | 神马午夜影院 | 日韩无套无码精品 | 欧美猛交免费 | 国产视频精选 | 中国免费观看的视频 | 精品在线小视频 | 精品少妇久久久久久888优播 | 国产男女无遮挡猛进猛出 | 免费又黄又爽又猛大片午夜 | 日韩福利一区二区三区 | 精品欧美一区二区在线观看 | 国产一区二区网 | 日韩欧美网址 | 成人免费a视频 | 韩国午夜av| 夜夜久久久 | 日本美女毛片 | 国产一级视频在线观看 | 少妇太爽了太深了太硬了 | 午夜生活片 | 老熟妻内射精品一区 | 在线观看中文字幕一区二区 | 久久人妖| 国产在线不卡 | 欧美亚洲在线 | 色多多入口 | 欧美黑人一级 | 国产一区二区三区四区 | 在线免费观看国产精品 | 久久久无码人妻精品无码 | 免费精品一区 | 夜夜精品一区二区无码 | 黄色小说在线视频 | 天天插美女 | 天天干天天操天天 | 综合色婷婷一区二区亚洲欧美国产 | 欧美黄色成人 | www.白虎| 日韩精品第一页 | 国产精品一区麻豆 | 一区二区三区视频在线免费观看 | 一区二区三区视频网 | 欧美变态视频 | av中文字幕在线播放 | 亚洲一区二区三区四 | 久久久精品视频一区 | 91超碰免费在线 | 一区二区高清在线观看 | 91天天色 | 青青国产精品 | 国产精品不卡 | 国产三级午夜理伦三级 | 国产高清一级片 | 亚洲一区二区激情 |