注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

SanTT's Box

Working notes and some private diary

 
 
 

日志

 
 
关于我

有点懒....有点呆.....兴趣丰富.....三分热度....

网易考拉推荐

[python] socket ftp script  

2018-02-27 11:35:10|  分类: Python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
[server]

import socket
import os
import hashlib

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

server.listen()

while True:
conn,addr = server.accept()
print("new conn:",addr)
while True:
print("Wait new cmd")
data = conn.recv(1024)
if not data:
print("break")
break

cmd, filename = data.decode().split()
print(filename)
if os.path.isfile(filename):
f = open(filename,"rb")
m = hashlib.md5()
file_size = os.stat(filename).st_size
conn.send(str(file_size).encode()) #send file size
conn.recv(1024) #wait for ack
for line in f:
m.update(line)
conn.send(line)
print("file md5",m.hexdigest())
f.close()

print("send done")

server.close()


[client]

import socket
import hashlib

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

while True:
cmd = input(">>:").strip()
if len(cmd) == 0: continue
if cmd.startswith("get"):
client.send(cmd.encode())
server_response = client.recv(1024)
print("server response:",server_response)
client.send("ready to recv file".encode("utf-8"))
file_total_size = int(server_response.decode())
received_size = 0
filename = cmd.split()[1]
f = open(filename + ".new","wb")
m = hashlib.md5()

while received_size < file_total_size:
if file_total_size - received_size > 1024 #要收不止一次
size = 1024
else:
size = file_total_size - received_size
print("last receive:", size)
data = client.recv(size)
received_size += len(data)
m.update(data)
f.write(data)
#print(file_total_size, received_size)
else:
new_file_md5 = m.hexdigest()
print("file recv done",received_size,file_total_size)
f.close()
server_file_md5 = client.recv(1024)
print("server file md5:",server_file_md5)
print("client file md5:",new_file_md5)

client.close()


  评论这张
 
阅读(45)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018