FTP_client

#更新日期 2018.5.25 未完待续....
import json

import os
import socket


class FTPClient:

def __init__(self,host,port):
self.client = socket.socket()
self.client.connect((host,port))
self.path = "home >>"
def ActionConnect(self):
while True:
msg = input(self.path).strip()
if not msg:continue
cmd = msg.split()[0]
print("查找%s方法" % cmd)
if hasattr(self,cmd):
fun = getattr(self,cmd)
print("调用%s方法" % cmd)
fun(msg)
def cd(self):
pass
def mkdir(self):
pass
def ls(self):
pass
def help(self):
pass
def put(self,*args):
cmd = args[0].strip().split()
filename = cmd[1]
if os.path.isfile(filename):
filesize = os.stat(filename).st_size
cmd_dir = {
"other":cmd[0],
"filename":filename,
"size":filesize
}
self.client.send( json.dumps(cmd_dir).encode())
#防止粘包 等待服务器端确认收到了数据
data = self.client.recv(1024)
outcome = int(data.decode().strip().split()[0])
#TODO 调用返回结果函数来判断是否可以发送
file = open(filename,"rb")
for line in file:
self.client.send(line)
else:
print("发送完毕!")
file.close()
else:
print("%s不存在该文件" % filename)
def get(self,*args):
cmd = args[0].strip().split()
filename = cmd[1]

cmd_dic = {
"other":cmd[0],
"filename":filename
}
self.client.send( json.dumps(cmd_dic).encode())
fileseize = int(self.client.recv(1024).strip())
if fileseize != -1:
if os.path.isfile(filename):
file = open(filename + ".new", "wb")
pass
else:
file = open(filename, "wb")
self.client.send(b"this ok")
read_size = 0
while read_size < fileseize:
data = self.client.recv(1024)
read_size += len(data)
file.write(data)
else:
print("接受完成")
if __name__ == "__main__":
client = FTPClient("localhost",9999)
client.ActionConnect()






转载于:https://www.cnblogs.com/angle90/p/FTP_socket.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值