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

歡迎訪問 生活随笔!

生活随笔

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

python

python 3.x 学习笔记14 (socket_ssh and socket_文件传输)

發布時間:2025/4/9 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 3.x 学习笔记14 (socket_ssh and socket_文件传输) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ssh服務端

import socket,osserver = socket.socket() server.bind(('localhost',6666))server.listen() conn, addr = server.accept() while True:print('等待新數據!')cmd = conn.recv(1024)if len(cmd) == 0:breakdata = os.popen(cmd.decode()).read()cmd_size = len(data.encode('utf-8'))print('檢測到數據大小',cmd_size)if len(data) == 0:data = '沒有此命令!!'conn.send(str(len(data.encode('utf-8'))).encode())order = conn.recv(1024)conn.send(data.encode('utf-8'))print('傳送完成!')server.close()

ssh客戶端

import socketclient = socket.socket() client.connect(('localhost',6666)) while True:cmd = input('>>>:')if cmd == 0:continueclient.send(cmd.encode('utf-8'))cmd_size = client.recv(1024)print('服務端檢測到數據大小:', cmd_size)if len(cmd_size) !=0:client.send('可以發送數據了'.encode(encoding='utf-8'))receive_size = 0receive_cmd = b''while receive_size < int(cmd_size.decode()):data = client.recv(1024)receive_size += len(data)receive_cmd += dataelse:print('接收到數據大小:',receive_size)print('數據接收完成!')print(receive_cmd.decode())

?

socket文件傳輸并校驗

服務端

import socket,os,hashlibserver = socket.socket() server.bind(('localhost',6666)) server.listen() conn, addr = server.accept() while True:print('等待新數據!')cmd = conn.recv(1024)if len(cmd) == 0:breakfilename = cmd.decode().split()[1]print(filename)if os.path.isfile(filename): #判斷文件是否存在f = open(filename,'rb') #打開文件m = hashlib.md5()file_size = os.stat(filename).st_size #查詢文件大小print(file_size)conn.send(str(file_size).encode()) #給客戶端發送文件大小conn.recv(1024) #等待并接受客戶端的確認,這一步可以解決粘包問題for line in f: #邊讀邊循環發送文件m.update(line) #得出每一句的md5值conn.send(line) #發送給客戶端print('file md5:',m.hexdigest())f.close()conn.recv(1024)conn.send(m.hexdigest().encode())print('傳送完成!')server.close()

socket文件傳輸并校驗

客戶端

import socket,hashlibclient = socket.socket() client.connect(('localhost',6666)) while True:cmd = input('>>>:').strip()if len(cmd) == 0:continueif cmd.startswith('get'): #傳輸文件名要以get開頭如:get varclient.send(cmd.encode('utf-8'))file_size = client.recv(1024)print('服務端檢測到文件大小:', int(file_size))client.send('可以發送數據了'.encode(encoding='utf-8'))file_total_size = int(file_size)receive_size = 0filename = cmd.split()[1] #以空格分割然后取出文件名f = open('new_'+filename ,'wb')m = hashlib.md5()while receive_size < file_total_size:data = client.recv(1024)m.update(data)receive_size += len(data)f.write(data)print(file_total_size, receive_size)else:new_file_md5 = m.hexdigest()print('數據接收完成!')f.close()client.send('可以發送md5值了'.encode())serve_md5 = client.recv(1024)print('新文件md5:',new_file_md5)print('原文件md5:',serve_md5)client.close()

?

轉載于:https://www.cnblogs.com/hsj-jingyu/p/8439900.html

總結

以上是生活随笔為你收集整理的python 3.x 学习笔记14 (socket_ssh and socket_文件传输)的全部內容,希望文章能夠幫你解決所遇到的問題。

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