CN107547645A - Linux服务端与windows客户端之间跨平台文件的传输方法 - Google Patents
Linux服务端与windows客户端之间跨平台文件的传输方法 Download PDFInfo
- Publication number
- CN107547645A CN107547645A CN201710762400.XA CN201710762400A CN107547645A CN 107547645 A CN107547645 A CN 107547645A CN 201710762400 A CN201710762400 A CN 201710762400A CN 107547645 A CN107547645 A CN 107547645A
- Authority
- CN
- China
- Prior art keywords
- file
- client
- folder
- linux
- permission
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开一种Linux服务端与windows客户端之间跨平台文件的传输方法,步骤是:步骤1,判断vsftp服务是否接收到MLST指令,如果接收到该指令则开始查询文件目录,进入步骤2,否则处理接收到的其它指令的业务;步骤2,先获得文件/文件夹的路径与文件权限,拼接得到文件/文件夹信息串;步骤3,根据步骤2得到的返回结果,将结果发送到客户端;步骤4,发送成功后,给客户端发送250End消息,表示MLST动作结束;步骤5,客户端向linux服务器发送STOR或RETR指令,服务器根据指令对文件进行上传或下载操作。此种方法可实现vsftp服务缺失的指令功能,解决linux端vsftp服务与一些常见的windows客户端间的文件通信,以支持windows客户端与linux搭建的服务端间跨平台文件上传下载。
Description
技术领域
本发明属于文件传输技术领域,特别涉及一种Linux服务端与windows客户端之间跨平台传输文件的实现方法。
背景技术
Windows与Linux是目前最流行的两种操作系统。基于Linux运行稳定、功能强大、获取方便等优点因素的考虑,仍是作为很多项目中服务器的优选。
文件传输是操作系统中常见的行为活动,Linux也提供了文件传输的工具,其中包括vsftp服务实现linux端的文件上传下载,并有相关的接口实现。
目前的传输技术存在着如下不足:
(I)现有的vsftp服务虽然提供了文件上传下载指令接口(STOR与RETR),但无法满足与windows客户端间的文件上传与下载。
(II)主要缺失windows客户端一些指令的实现,如MLST指令,导致无法正常通信。
发明内容
本发明的目的,在于提供一种Linux服务端与windows客户端之间跨平台文件的传输方法,其可实现vsftp服务缺失的指令功能,解决linux端vsftp服务与一些常见的windows客户端间的文件通信,以支持windows客户端与linux搭建的服务端间跨平台文件上传下载。
为了达成上述目的,本发明的解决方案是:
一种Linux服务端与windows客户端之间跨平台文件的传输方法,包括如下步骤:
步骤1,将接收到的指令ftp_cmd_str与“MLST”比对,判断vsftp服务是否接收到MLST指令,如果接收到该指令则开始查询文件目录,进入步骤2,否则处理接收到的其它指令的业务,不进入后续步骤;
步骤2,根据接收到的MLST指令,先获得文件/文件夹的路径与文件权限,拼接得到文件/文件夹信息串,转步骤3;
步骤3,根据步骤2得到的返回结果,通过vsftp与客户端发送指令的接口vsf_cmdio_write_char将结果发送到客户端;
步骤4,发送成功后,给客户端发送250End消息,表示MLST动作结束,客户端收到250End消息,进入步骤5;
步骤5,客户端向linux服务器发送STOR或RETR指令,服务器根据指令对文件进行上传或下载操作。
上述步骤2的具体内容是:
步骤21,根据接收到的MLST指令,查询要进行处理的文件/文件夹,若未查询到,则返回权限值PERMISSION_INVALIDNAME,转步骤3;若查询到,则获取其相应的路径,转步骤22;
步骤22,根据当前用户信息和传入的指令,构造函数接口进行判断获取得到文件的权限,如果权限异常则转步骤3,否则转步骤23;
步骤23,拼接获取文件/文件夹信息串。
上述步骤23中,文件/文件夹信息串的形式是:文件类型,文件大小,文件最后修改时间,路径名;步骤23的具体内容是:
步骤231,根据步骤22得到的文件权限值,如果为PERMISSION_FILENOTDIR,得到子串type=file,如果权限为PERMISSION_DIRNOTFILE,则得到子串type=dir;
步骤232,计算获得文件的大小,得到子串size=%I64d,其中%I64d为size值类型;
步骤233,获取文件最后修改的时间,得到子串:
modify=%04d%02d%02d%02d%02d%02d
步骤234,最终整理拼接文件/文件夹信息串,格式为:
文件类型:type=file;size=%I64d;modify=%04d%02d%02d%02d%02d%02d路径名;
文件夹类型:type=dir;size=%I64d;modify=%04d%02d%02d%02d%02d%02d路径名。
上述步骤3的具体内容是:若步骤21返回文件不存在,或步骤22返回文件权限异常,则通过接口将550Permission denied/550Filename invalid/550directory notfound发送到客户端,然后中止退出,其中,550Permission denied表示用户无操作权限,550Filename invalid表示无效路径名,550directory not found表示存在其他错误;否则,结合步骤21返回的路径和步骤23返回的文件/文件夹信息串,将“250-Listing+文件/文件夹的路径”拼接通过接口发送给客户端,再将“文件/文件夹信息串”发送到客户端,再转步骤4。
上述步骤5中,服务器操作完成后,向客户端反馈文件操作结果,操作结果包括550表示异常,返回250表示成功。
现有方案只实现vsftp在Linux端的通信实现文件的上传下载,没有考虑到跨平台情况常见的windows客户端间兼容性,采用上述方案后,本发明能够实现这部分缺失,实现vsftp文件目录内容的检索,且支持与常见windows客户端间文件上传下载功能。
附图说明
图1是本发明的流程图。
具体实施方式
以下将结合附图,对本发明的技术方案及有益效果进行详细说明。
如图1所示,本发明提供一种Linux服务端与windows客户端之间跨平台文件的传输方法,主要完成接收到STOR(处理上传)或RETR(处理下载)指令之前的MLST指令处理,列出指定目录内容,通过与客户端间的发送指令接口vsf_cmdio_write或vsf_cmdio_write_char返回结果给客户端;所述传输方法具体包括如下步骤:
步骤1,将接收到的指令ftp_cmd_str与“MLST”比对,判断vsftp服务是否接收到MLST指令,如果接收到该指令则开始查询文件目录,进入步骤2,否则处理接收到的其它指令的业务,不进入后续步骤;
步骤2,根据接收到的MLST指令,先获得文件/文件夹的路径与文件权限,拼接得到文件/文件夹信息串,转步骤3;
具体内容是:
步骤21,根据接收到的MLST指令,查询要进行处理的文件/文件夹,若未查询到,则返回权限值PERMISSION_INVALIDNAME,转步骤3;若查询到,则获取其相应的路径(用于步骤23中拼接信息串),转步骤22;
步骤22,根据当前用户信息和传入的指令,构造函数接口进行判断获取得到文件的权限,如果权限异常(返回值非0)则转步骤31,否则转步骤23;
其中,文件权限包括:
PERMISSION_DENIED(0x01),//根据当前用户信息,判断是否有当前用户权限
PERMISSION_NOTFOUND(0x02),//未找到该文件/文件夹
PERMISSION_DIRNOTFILE(0x04|PERMISSION_DOESALREADYEXIST),//为文件夹
PERMISSION_FILENOTDIR(0x08|PERMISSION_DOESALREADYEXIST),//为文件
PERMISSION_DOESALREADYEXIST(0x10),//该文件/文件夹已经存在
PERMISSION_INVALIDNAME(0x20),//该文件/文件夹名无效
0(正常返回值)。
步骤23,拼接获取文件/文件夹信息串:
文件类型(文件夹或普通文件),文件大小,文件最后修改时间,路径名。其中最后修改时间与文件名之间用空格分割。
具体内容是:
步骤231,根据步骤22得到的文件权限值,如果为PERMISSION_FILENOTDIR,得到子串type=file,如果权限为PERMISSION_DIRNOTFILE,则得到子串type=dir;
步骤232,计算获得文件的大小,得到子串size=%I64d,其中%I64d为size值类型;
步骤233,获取文件最后修改的时间,得到子串:
modify=%04d%02d%02d%02d%02d%02d
步骤234,最终整理拼接文件/文件夹信息串,格式如:
文件类型:type=file;size=%I64d;modify=%04d%02d%02d%02d%02d%02d路径名;
文件夹类型:type=dir;size=%I64d;modify=%04d%02d%02d%02d%02d%02d路径名;
步骤3,根据步骤2中得到的返回结果,此处返回结果包括步骤22返回的权限和步骤23返回的文件/文件夹信息串,通过vsftp与客户端发送指令的接口vsf_cmdio_write_char将结果发送到客户端;
具体包括如下两种情况:
若文件不存在或文件权限异常,则通过接口将550Permission denied/550Filename invalid/550directory not found发送到客户端,然后中止退出。其中,550Permission denied表示用户无操作权限,550Filename invalid表示无效路径名,550directory not found表示存在其他错误。
如果文件权限正常(正常返回0),将“250-Listing+文件/文件夹的路径”拼接通过接口发送给客户端,再将“文件/文件夹信息串”发送到客户端,再转步骤4;
步骤4,上述结果发送成功,给客户端发送250End消息,表示MLST动作结束,客户端会收到250End消息,进入步骤5;
步骤5,客户端根据需要,向linux服务器(vsftpd服务)发送STOR或RETR指令,服务器接收到STOR(接收数据并且在服务器站点保存为文件)或RETR(传输文件副本)指令,对文件进行上传或下载操作。向客户端反馈文件操作结果,操作结果包括550表示异常,返回250表示成功。流程结束。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
Claims (5)
1.一种Linux服务端与windows客户端之间跨平台文件的传输方法,其特征在于包括如下步骤:
步骤1,将接收到的指令ftp_cmd_str与“MLST”比对,判断vsftp服务是否接收到MLST指令,如果接收到该指令则开始查询文件目录,进入步骤2,否则处理接收到的其它指令的业务,不进入后续步骤;
步骤2,根据接收到的MLST指令,先获得文件/文件夹的路径与文件权限,拼接得到文件/文件夹信息串,转步骤3;
步骤3,根据步骤2得到的返回结果,通过vsftp与客户端发送指令的接口vsf_cmdio_write_char将结果发送到客户端;
步骤4,发送成功后,给客户端发送250End消息,表示MLST动作结束,客户端收到250End消息,进入步骤5;
步骤5,客户端向linux服务器发送STOR或RETR指令,服务器根据指令对文件进行上传或下载操作。
2.如权利要求1所述的Linux服务端与windows客户端之间跨平台文件的传输方法,其特征在于:所述步骤2的具体内容是:
步骤21,根据接收到的MLST指令,查询要进行处理的文件/文件夹,若未查询到,则返回权限值PERMISSION_INVALIDNAME,转步骤3;若查询到,则获取其相应的路径,转步骤22;
步骤22,根据当前用户信息和传入的指令,构造函数接口进行判断获取得到文件的权限,如果权限异常则转步骤3,否则转步骤23;
步骤23,拼接获取文件/文件夹信息串。
3.如权利要求2所述的Linux服务端与windows客户端之间跨平台文件的传输方法,其特征在于:所述步骤23中,文件/文件夹信息串的形式是:文件类型,文件大小,文件最后修改时间,路径名;步骤23的具体内容是:
步骤231,根据步骤22得到的文件权限值,如果为PERMISSION_FILENOTDIR,得到子串type=file,如果权限为PERMISSION_DIRNOTFILE,则得到子串type=dir;
步骤232,计算获得文件的大小,得到子串size=%I64d,其中%I64d为size值类型;
步骤233,获取文件最后修改的时间,得到子串:
modify=%04d%02d%02d%02d%02d%02d
步骤234,最终整理拼接文件/文件夹信息串,格式为:
文件类型:type=file;size=%I64d;modify=%04d%02d%02d%02d%02d%02d路径名;
文件夹类型:type=dir;size=%I64d;modify=%04d%02d%02d%02d%02d%02d路径名。
4.如权利要求2所述的Linux服务端与windows客户端之间跨平台文件的传输方法,其特征在于:所述步骤3的具体内容是:若步骤21返回文件不存在,或步骤22返回文件权限异常,则通过接口将550Permission denied/550Filename invalid/550directory notfound发送到客户端,然后中止退出,其中,550Permission denied表示用户无操作权限,550Filename invalid表示无效路径名,550directory not found表示存在其他错误;否则,结合步骤21返回的路径和步骤23返回的文件/文件夹信息串,将“250-Listing+文件/文件夹的路径”拼接通过接口发送给客户端,再将“文件/文件夹信息串”发送到客户端,再转步骤4。
5.如权利要求1所述的Linux服务端与windows客户端之间跨平台文件的传输方法,其特征在于:所述步骤5中,服务器操作完成后,向客户端反馈文件操作结果,操作结果包括550表示异常,返回250表示成功。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710762400.XA CN107547645B (zh) | 2017-08-30 | 2017-08-30 | Linux服务端与windows客户端之间跨平台文件的传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710762400.XA CN107547645B (zh) | 2017-08-30 | 2017-08-30 | Linux服务端与windows客户端之间跨平台文件的传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107547645A true CN107547645A (zh) | 2018-01-05 |
CN107547645B CN107547645B (zh) | 2020-10-02 |
Family
ID=60959025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710762400.XA Active CN107547645B (zh) | 2017-08-30 | 2017-08-30 | Linux服务端与windows客户端之间跨平台文件的传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107547645B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109040022A (zh) * | 2018-06-29 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种文件传输协议编译方法、装置及设备 |
CN109257420A (zh) * | 2018-08-29 | 2019-01-22 | 郑州云海信息技术有限公司 | 一种文件互传方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040003091A1 (en) * | 2002-06-26 | 2004-01-01 | International Business Machines Corporation | Accessing a remote iSeries or AS/400 computer system from an integrated development environment |
US20130166764A1 (en) * | 2008-10-28 | 2013-06-27 | Oliver Boldt | Using A Knowledge Network for File Transfer Protocol |
CN104516687A (zh) * | 2014-12-22 | 2015-04-15 | 中国科学院信息工程研究所 | 一种Linux块设备的Windows远程映射方法 |
US20150319216A1 (en) * | 2014-04-30 | 2015-11-05 | The Boeing Company | Transferring files between different operating systems |
CN106095678A (zh) * | 2016-06-08 | 2016-11-09 | 上海爱数信息技术股份有限公司 | 用于Windows平台下数据库业务操作的自动化结果检查方法 |
-
2017
- 2017-08-30 CN CN201710762400.XA patent/CN107547645B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040003091A1 (en) * | 2002-06-26 | 2004-01-01 | International Business Machines Corporation | Accessing a remote iSeries or AS/400 computer system from an integrated development environment |
US20130166764A1 (en) * | 2008-10-28 | 2013-06-27 | Oliver Boldt | Using A Knowledge Network for File Transfer Protocol |
US20150319216A1 (en) * | 2014-04-30 | 2015-11-05 | The Boeing Company | Transferring files between different operating systems |
CN104516687A (zh) * | 2014-12-22 | 2015-04-15 | 中国科学院信息工程研究所 | 一种Linux块设备的Windows远程映射方法 |
CN106095678A (zh) * | 2016-06-08 | 2016-11-09 | 上海爱数信息技术股份有限公司 | 用于Windows平台下数据库业务操作的自动化结果检查方法 |
Non-Patent Citations (1)
Title |
---|
XIAOYUXIANSHENGING: "linux网络编程之实现跨平台PC之间进行文件传输", 《HTTPS://BLOG.CSDN.NET/XIAOYUXIANSHENGING/ARTICLE/DETAILS/69055948》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109040022A (zh) * | 2018-06-29 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种文件传输协议编译方法、装置及设备 |
CN109257420A (zh) * | 2018-08-29 | 2019-01-22 | 郑州云海信息技术有限公司 | 一种文件互传方法和装置 |
CN109257420B (zh) * | 2018-08-29 | 2021-07-02 | 郑州云海信息技术有限公司 | 一种文件互传方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107547645B (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9531802B2 (en) | Data transmission and reception system | |
US9497284B2 (en) | Apparatus and method for caching of compressed content in a content delivery network | |
US9984093B2 (en) | Technique selection in a deduplication aware client environment | |
US20020065800A1 (en) | HTTP archive file | |
US9602613B2 (en) | Method and system for accelerating browsing sessions | |
CN102355426B (zh) | 实现离线文件传输的方法和系统 | |
EP2372574A1 (en) | File storage synchronisation system and components thereof | |
US9491225B2 (en) | Offline download method and system | |
US10367871B2 (en) | System and method for all-in-one content stream in content-centric networks | |
CN103812882A (zh) | 一种文件传输的方法及系统 | |
US9917894B2 (en) | Accelerating transfer protocols | |
CN103297447B (zh) | 一种资源共享方法及其设备 | |
US9916317B2 (en) | Data transfer optimization through destination analytics and data de-duplication | |
CN102420843A (zh) | 一种基于云压缩链接的压缩和解压缩方法、装置及系统 | |
AU2001227019A1 (en) | Methods and apparatus for downloading a file from a server | |
US20020059463A1 (en) | Method and system for accelerating internet access through data compression | |
CN101635737A (zh) | 下载方法、系统、p2p服务器、客户端 | |
US20160057190A1 (en) | System and method for reconstructable all-in-one content system | |
CN107547645A (zh) | Linux服务端与windows客户端之间跨平台文件的传输方法 | |
CN105074688B (zh) | 使用对等节点图的基于流的数据去重复 | |
WO2002010929A1 (en) | System and method for serving compressed content over a computer network | |
US20030220914A1 (en) | Method for managing data in a network | |
CN101184002A (zh) | 一种点对点流量深度监测方法和设备 | |
CN102638577B (zh) | 一种采集种子文件的方法、设备及系统 | |
WO2002019653A3 (en) | System and method for transferring files |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |