Python_FTP通讯软件

ftpServer.py

 1 import socket
 2 import threading
 3 import os
 4 import struct
 5
 6 #用户账号、密码、主目录
 7 #也可以把这些信息存放到数据库中
 8 users = {‘zhangsan‘:{‘pwd‘:‘zhangsan1234‘, ‘home‘:r‘c:\python 3.5‘},
 9          ‘lisi‘:{‘pwd‘:‘lisi567‘, ‘home‘:‘c:\\‘}}
10
11 def server(conn,addr, home):
12     print(‘新客户端:‘+str(addr))
13     #进入当前用户主目录
14     os.chdir(home)
15     while True:
16         data = conn.recv(100).decode().lower()
17         #显示客户端输入的每一条命令
18         print(data)
19         #客户端退出
20         if data in (‘quit‘, ‘q‘):
21             break
22         #查看当前文件夹的文件列表
23         elif data in (‘list‘, ‘ls‘, ‘dir‘):
24             files = str(os.listdir(os.getcwd()))
25             files = files.encode()
26             conn.send(struct.pack(‘I‘, len(files)))
27             conn.send(files)
28         #切换至上一级目录
29         elif ‘‘.join(data.split()) == ‘cd..‘:
30             cwd = os.getcwd()
31             newCwd = cwd[:cwd.rindex(‘\\‘)]
32             #考虑根目录的情况
33             if newCwd[-1] == ‘:‘:
34                 newCwd += ‘\\‘
35             #限定用户主目录
36             if newCwd.lower().startswith(home):
37                 os.chdir(newCwd)
38                 conn.send(b‘ok‘)
39             else:
40                 conn.send(b‘error‘)
41         #查看当前目录
42         elif data in (‘cwd‘, ‘cd‘):
43             conn.send(str(os.getcwd()).encode())
44         elif data.startswith(‘cd ‘):
45             #指定最大分隔次数,考虑目标文件夹带有空格的情况
46             #只允许使用相对路径进行跳转
47             data = data.split(maxsplit=1)
48             if len(data) == 2 and  os.path.isdir(data[1]) 49                and data[1]!=os.path.abspath(data[1]):
50                 os.chdir(data[1])
51                 conn.send(b‘ok‘)
52             else:
53                 conn.send(b‘error‘)
54         #下载文件
55         elif data.startswith(‘get ‘):
56             data = data.split(maxsplit=1)
57             #检查文件是否存在
58             if len(data) == 2 and os.path.isfile(data[1]):
59                 conn.send(b‘ok‘)
60                 fp = open(data[1], ‘rb‘)
61                 while True:
62                     content = fp.read(4096)
63                     #发送文件结束
64                     if not content:
65                         conn.send(b‘overxxxx‘)
66                         break
67                     #发送文件内容
68                     conn.send(content)
69                     if conn.recv(10) == b‘ok‘:
70                         continue
71                 fp.close()
72             else:
73                 conn.send(b‘no‘)
74         #无效命令
75         else:
76             pass
77
78     conn.close()
79     print(str(addr)+‘关闭连接‘)
80
81 #创建Socket,监听本地端口,等待客户端连接
82 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
83 sock.bind((‘‘, 10600))
84 sock.listen(5)
85 while True:
86     conn, addr = sock.accept()
87     #验证客户端输入的用户名和密码是否正确
88     userId, userPwd = conn.recv(1024).decode().split(‘,‘)
89     if userId in users and users[userId][‘pwd‘] == userPwd:
90         conn.send(b‘ok‘)
91         #为每个客户端连接创建并启动一个线程,参数为连接、客户端地址、客户主目录
92         home = users[userId][‘home‘]
93         t = threading.Thread(target=server, args=(conn,addr,home))
94         t.daemon = True
95         t.start()
96     else:
97         conn.send(b‘error‘)

ftpClient.py

 1 import socket
 2 import threading
 3 import os
 4 import struct
 5
 6 #用户账号、密码、主目录
 7 #也可以把这些信息存放到数据库中
 8 users = {‘zhangsan‘:{‘pwd‘:‘zhangsan1234‘, ‘home‘:r‘c:\python 3.5‘},
 9          ‘lisi‘:{‘pwd‘:‘lisi567‘, ‘home‘:‘c:\\‘}}
10
11 def server(conn,addr, home):
12     print(‘新客户端:‘+str(addr))
13     #进入当前用户主目录
14     os.chdir(home)
15     while True:
16         data = conn.recv(100).decode().lower()
17         #显示客户端输入的每一条命令
18         print(data)
19         #客户端退出
20         if data in (‘quit‘, ‘q‘):
21             break
22         #查看当前文件夹的文件列表
23         elif data in (‘list‘, ‘ls‘, ‘dir‘):
24             files = str(os.listdir(os.getcwd()))
25             files = files.encode()
26             conn.send(struct.pack(‘I‘, len(files)))
27             conn.send(files)
28         #切换至上一级目录
29         elif ‘‘.join(data.split()) == ‘cd..‘:
30             cwd = os.getcwd()
31             newCwd = cwd[:cwd.rindex(‘\\‘)]
32             #考虑根目录的情况
33             if newCwd[-1] == ‘:‘:
34                 newCwd += ‘\\‘
35             #限定用户主目录
36             if newCwd.lower().startswith(home):
37                 os.chdir(newCwd)
38                 conn.send(b‘ok‘)
39             else:
40                 conn.send(b‘error‘)
41         #查看当前目录
42         elif data in (‘cwd‘, ‘cd‘):
43             conn.send(str(os.getcwd()).encode())
44         elif data.startswith(‘cd ‘):
45             #指定最大分隔次数,考虑目标文件夹带有空格的情况
46             #只允许使用相对路径进行跳转
47             data = data.split(maxsplit=1)
48             if len(data) == 2 and  os.path.isdir(data[1]) 49                and data[1]!=os.path.abspath(data[1]):
50                 os.chdir(data[1])
51                 conn.send(b‘ok‘)
52             else:
53                 conn.send(b‘error‘)
54         #下载文件
55         elif data.startswith(‘get ‘):
56             data = data.split(maxsplit=1)
57             #检查文件是否存在
58             if len(data) == 2 and os.path.isfile(data[1]):
59                 conn.send(b‘ok‘)
60                 fp = open(data[1], ‘rb‘)
61                 while True:
62                     content = fp.read(4096)
63                     #发送文件结束
64                     if not content:
65                         conn.send(b‘overxxxx‘)
66                         break
67                     #发送文件内容
68                     conn.send(content)
69                     if conn.recv(10) == b‘ok‘:
70                         continue
71                 fp.close()
72             else:
73                 conn.send(b‘no‘)
74         #无效命令
75         else:
76             pass
77
78     conn.close()
79     print(str(addr)+‘关闭连接‘)
80
81 #创建Socket,监听本地端口,等待客户端连接
82 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
83 sock.bind((‘‘, 10600))
84 sock.listen(5)
85 while True:
86     conn, addr = sock.accept()
87     #验证客户端输入的用户名和密码是否正确
88     userId, userPwd = conn.recv(1024).decode().split(‘,‘)
89     if userId in users and users[userId][‘pwd‘] == userPwd:
90         conn.send(b‘ok‘)
91         #为每个客户端连接创建并启动一个线程,参数为连接、客户端地址、客户主目录
92         home = users[userId][‘home‘]
93         t = threading.Thread(target=server, args=(conn,addr,home))
94         t.daemon = True
95         t.start()
96     else:
97         conn.send(b‘error‘)
时间: 2024-10-26 10:09:05

Python_FTP通讯软件的相关文章

与微信双向互通的企业即时通讯软件AM8

软件名称:Active Messenger(企业即时通讯软件) 软件版本:8.0 软件大小:161MB 软件类型:简体中文/国产软件/共享软件 软件分类:联络聊天 运行环境:XP/WIN7/WIN8 企业即时通讯软件AM简介: Active Messenger(简称AM)是一套功能强大而使用简单的企业即时通讯软件.其提供即时消息.文件发送.角色群.语音通讯.组织机构分权管理.系统支持PC及移动设备(苹果及安卓)也可以支持移动端采用微信与PC端双向互通,可以在企业局域网内部部署并提供完善的二次开发

基于WiFi的Android局域网即时通讯软件

基于WiFi的Android局域网即时通讯软件,通过自建WiFi热点的方式与其他移动设备进行通信,实现了文字聊天.语音留言.文件互传等功能,满足基本的日常使用需求. 下载地址:http://www.devstore.cn/code/info/670.html 运行截图:     

手机 视频 开发即时通讯软件

手机视频开发即时通讯软件 据<第30次中国互联网络发展状况统计报告>显示,即时通信在中国网民中的使用率达82.8%,用户人数4.45亿.手机上网的进一步普及,尤其是智能终端的推广,以及手机聊天工具的创新,使得即时通信作为中国网民第一应用的地位更加稳固. 从整体来看,即时通信行业发展至今已历经多年,运营商凭借在市场中长期积累的经验,越来越了解用户的需求,运营商通过不断对产品功能进行更新,开创特色应用,增强了在网民中的渗透,并提高了用户黏性.而当用户对产品形成固定的使用习惯后,用户不易流失. 从手

手机视频开发即时通讯软件

据<第30次中国互联网络发展状况统计报告>显示,即时通信在中国网民中的使用率达82.8%,用户人数4.45亿.手机上网的进一步普及,尤其是智能终端的推广,以及手机聊天工具的创新,使得即时通信作为中国网民第一应用的地位更加稳固. 从整体来看,即时通信行业发展至今已历经多年,运营商凭借在市场中长期积累的经验,越来越了解用户的需求,运营商通过不断对产品功能进行更新,开创特色应用,增强了在网民中的渗透,并提高了用户黏性.而当用户对产品形成固定的使用习惯后,用户不易流失. 从手机端来看,手机即时通信的移

币圈链圈IM聊天直播即时通讯软件app开发

说到社交平台,几乎所有人的第一反应是现在腾讯的微信,微信和QQ可以说已经占用了大部分. 我们平常使用的社交系统被称为im及时通讯系统. 币圈即时通讯软件开发T:前面138中间2315后面3201 在通过区块链技术基础上,打造币圈的即时通讯系统,为币圈的用户玩家提供一个全球用户聚集地,通过币圈的隐秘即时通讯系统,可以畅聊币圈资讯,分享全球币圈的最新动态,一键分享世界各地币圈用户玩家,打造币圈交易.分享.信息.娱乐一体化区块链IM社交即时通讯系统. 币圈链圈IM聊天即时通讯软件app开发都有哪些优势

企业即时通讯软件Cnskype for Business

Cnskype for Business企业即时通讯软件实际上可以说是Lync和skype for Business的一个延伸产品.是一款更适合国内企业使用的企业即时通讯软件.视屏会议系统.为什么这么说呢?早些年,专家称微软Lync还不适合在企业中应用,后来Lync更名为skype for Business,在功能和运行环境等方面都有了很大的改变,赢得了企业的青睐,但它适合国内的企业使用吗?高昂的费用又有多少家企业会选择?这点值得深思.那么国内企业适合使用什么样的企业办公软件?今天就给大家讲一款

恩布企业IM 1.9 版本,企业即时通讯软件

恩布企业IM,开源企业IM,免费企业即时通讯,企业内部通讯平台,Entboost发布v1.9版本,主要版本更新内容: 管理中心增加企业客服座席管理功能,支持实现客服多个座席自动分配等: 增加视频服务器管理功能,满足大企业集团或运营平台百万级别用户视频通讯需求: 解决部分BUG,如上个版本添加表情描述功能,导致不能正常显示默认头像问题: PC IM客户端增加纯色皮肤和渐变皮肤选择功能: PC IM客户端功能优化,如部分环境下,视频聊天没有声音,退出视频界面卡死:有时用户会显示为游客等问题: 恩布企

恩布企业IM 1.8 版本,企业内部通讯软件

恩布企业IM,开源企业IM,免费企业即时通讯,企业内部通讯平台,Entboost发布v1.8版本,主要版本更新内容: 管理中心增加系统监控,集群管理二大功能模块:增加云盘空间.离线消息.文件大小等参数配置: 解决部分BUG,如相同帐号同时登录多个终端,有时会收不到消息问题等: PC IM客户端产品增加位置记忆,靠边自动伸缩隐藏:表情增加文字描述等功能: PC IM客户端完善视频会议.视频通话.文件传输描述:解决某些路由器,传输P2P文件失败等问题: 恩布企业IM私有云下载:(带服务端.PC端.安

恩布企业IM 1.9 版本,免费企业即时通讯软件

恩布企业IM,开源企业IM,免费企业即时通讯,企业内部通讯平台,Entboost发布v1.9版本,主要版本更新内容: 管理中心增加企业客服座席管理功能,支持实现客服多个座席自动分配等: 增加视频服务器管理功能,满足大企业集团或运营平台百万级别用户视频通讯需求: 解决部分BUG,如上个版本添加表情描述功能,导致不能正常显示默认头像问题: PC IM客户端增加纯色皮肤和渐变皮肤选择功能: PC IM客户端功能优化,如部分环境下,视频聊天没有声音,退出视频界面卡死:有时用户会显示为游客等问题: 恩布企