本发明属于文件查看和传输领域,更具体地,涉及一种内网文件远程访问的方法及系统。
背景技术:
在现有技术中,文件的查看和传输功能都需要安装的ftp服务软件。在此类软件中,开源可以看到代码的较少,很难保证自己完全了解软件的功能并配置好软件的权限和功能,在平时使用时很难保证管理员对使用者的行为有一个确切的了解。并且软件多为多线程,某一连接崩溃可能造成整个程序崩溃。
本发明用于在小内存嵌入式设备上搭建ftp服务系统,代码简单。并且本远程访问方法可以进行断点上传下载,在网络环境差和出错率高的环境有很大的优势。同时采用多进程的方式提供服务,当某一子进程崩溃,不会影响整体系统的稳定。
技术实现要素:
针对现有技术的缺陷,本发明的目的在于提供一种内网文件远程访问的方法,旨在解决嵌入式系统内存资源紧缺,网络环境差的问题。
本发明提供了一种内网文件远程访问的方法,包括下述步骤:
步骤101:服务端程序运行,当前进程为父进程;
步骤102:由父进程绑定本机的某一个固定网络端口,并由此端口接收客户端的服务请求和发送处理结果;
步骤103:由父进程产生合适数量的子进程,并将子进程标记为空闲,同时父进程与每个子进程建立一个已连接的套接字,用于进程间通讯;
步骤104:同步等待客户端连接和子进程发来信息;当服务端收到客户端连接请求时,端口有效,父进程进入处理客户端连接的程序;当子进程发来信息时,套接字有效,父进程进入处理子进程信息的程序;
步骤105:服务器收到连接请求后,父进程和客户端建立连接;
步骤106:通过父进程查找是否有空闲的子进程;若是则将这个客户端的服务任务分配给一个空闲的子进程;若否则断开与客户端的连接;
步骤107:父进程将与客户端连接的网络文件描述符通过套接字发送给空闲子进程,并由子进程处理客户端的服务请求;
步骤108:当父进程将服务任务发送给子进程后,父进程断开与客服端的连接,由子进程与客户端连接并提供服务;当没有空闲的子进程时,父进程直接断开与客户端的连接;
步骤109:当子进程处理完客户端的请求,客户端退出后,子进程会通过套接字向父进程发送处理完服务请求的指令;父进程收到后,重新将该进程标记为空闲。
本发明还提供了一种内网文件远程访问的系统,包括服务端和客户端,服务端执行父进程和子进程,客户端执行如下流程:
步骤301:客户端程序开始运行;
步骤302:客户端程序向服务器发送服务请求;
步骤303:如果连接成功,执行正常的ftp服务流程,如果连接失败,客户端在终端上打印错误信息,并退出程序;
步骤304:连接成功后,等待用户输入指令;
步骤305:收到用户指令后,客户端先对指令进行解析;
步骤306:当用户指令为退出程序时,客户端断开与服务端的连接,并退出程序;
步骤307:当用户指令为显示当前路径的指令时,客户端向服务器端发送显示当前路径的请求;
步骤308:当用户指令为显示当前路径下所有文件夹和文件详情的指令时,客户端向服务器端发送显示当前路径下所有文件夹和文件详情的请求;
步骤309:当用户指令为进入当前路径下的某一文件夹的指令时,客户端向服务器端发送进入当前路径下的某一文件夹的请求;
步骤310:当用户指令为下载当前路径下某一文件的指令时,客户端向服务器端发送下载当前路径下某一文件的请求,如果客户端发现本地存在该文件则向服务器进行反馈并停止下载,如果客户端发现本地存在该文件的不完整版本,则从断点处开始下载;
步骤311:当用户指令为上传文件的指令时,客户端向服务器端发送上传文件的请求,如果服务器反馈已存在该文件则停止上传,如果服务器反馈存在未上传完成的文件,则从服务器反馈的断点处进行上传;
步骤312:当用户指令为删除当前文件夹下某文件的指令时,客户端向服务器端发送删除当前文件夹下某文件的请求;
步骤313:接收服务端的服务结果,在终端打印当前路径;
步骤314:接收服务端的服务结果,在终端打印文件和文件夹的详情;
步骤315:接收服务端的服务结果,在终端打印当前路径;
步骤316:接收服务端的服务结果,接收服务端发来的文件并保存,如果发来的为错误信息,则在终端打印错误信息;
步骤317:接收服务端的服务结果,开始上传文件;
步骤318:接收服务端的服务结果,接收服务器的反馈信息,在终端上打印是否已删除;
步骤319:当客户端和服务端连接失败时,在终端上打印错误信息;
步骤320:终止客户端进程。
通过本发明所构思的以上技术方案,与现有技术相比,由于本发明结合断点上传和下载的功能,当在网络比较差的环境下,可以减少断开连接后,重传的数据量。
附图说明
图1是本发明实施例提供的一种内网文件远程访问的方法中服务端-父进程的实现流程图;
图2是本发明实施例提供的一种内网文件远程访问的方法中服务端-子进程的实现流程图;
图3是本发明实施例提供的一种内网文件远程访问的方法中客户端实现流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的目的是为了提供一个占用内存小,防崩溃,功能简单的内网文件远程访问方案。
图1示出了本发明实施例提供的一种内网文件远程访问的方法中服务端-父进程的实现流程;具体包括:
步骤101服务端程序运行,当前进程为父进程。
步骤102由父进程绑定本机的某一个固定网络端口,并由此端口接收客户端的服务请求和发送处理结果。
步骤103由父进程产生合适数量的子进程,并且将子进程标记为空闲,同时父进程与每个子进程建立一个已连接的套接字,用于进程间通讯。
步骤104同步等待客户端连接和子进程发来信息。当服务端收到客户端连接请求时,端口有效,父进程进入处理客户端连接的程序。当子进程发来信息是,套接字有效,父进程进入处理子进程信息的程序。
步骤105服务器收到连接请求后,父进程和客户端建立连接。
步骤106此时,父进程查找是否有空闲的子进程。如果有空闲的子进程就将这个客户端的服务任务分配给一个空闲的子进程。如果没有空闲的子进程,就断开与客户端的连接。
步骤107父进程将与客户端连接的网络文件描述符通过套接字发送给空闲子进程。由子进程处理客户端的服务请求。
步骤108当父进程将服务任务发送给子进程以后,父进程断开与客服端的连接,由子进程与客户端连接并提供服务。当没有空闲的子进程时,父进程直接断开与客户端的连接。
步骤109当子进程处理完客户端的请求,客户端退出以后,子进程会通过套接字向父进程发送处理完服务请求的指令。父进程收到后,重新将该进程标记为空闲。
父进程开始根据系统资源创建合适数量的子进程,提高了服务器的响应速度,同时不会对嵌入式系统硬件产生太大的压力。同时,主进程的任务仅为管理子进程和分配服务任务,出错概率较低,有助于提高系统的稳定性。
图2示出了本发明实施例提供的一种内网文件远程访问的方法中服务端-子进程的实现流程,具体包括:
步骤201子进程由父进程产生,子进程代码已在服务程序中包括。
步骤202子进程同步等待父进程分配任务。子进程可以通过与父进程建立的套接字接收父进程发来的网络文件描述符,和客户端建立连接,为客户端提供服务。
步骤203子进程与客户端已经建立连接,子程序为客户端提供服务。此时,子程序收到客户端的服务请求,并解析命令。
步骤204收到客户端要求服务端列出当前路径的请求。发送当前路径给客户端。
步骤205收到客户端要求服务端列出当前路径下的所有文件夹和文件详情的请求。发送当前路径下所有文件夹和文件的详情给客户端。
步骤206收到客户端进入当前路径下某文件夹的请求。子进程打开某文件夹,并将当前路径发送给客户端。如果没有要进入的文件夹,子进程不执行打开文件夹的指令,并将当前路径发送给客户端。
步骤207收到客户端请求下载当前路径下某一文件的请求。子进程首先询问客户端本地是否已存在该文件或存在该文件的不完整版本。如果该文件已存在则不提供下载服务,如果存在不完整版本则从断点出发送文件。如果文件不存在,则发送错误信息。
步骤208收到客户端请求上传一个文件到服务端。子进程首先查看本地是否已存在该文件或存在该文件的不完整版本。如果该文件已存在则不接收该文件,如果存在不完整版本则要求客户端从断点出发送文件。
步骤209收到客户端请求删除当前路径下某一文件的请求。删除该文件。没有该文件不存在,发送错误信息。
步骤210子进程服务完客户端的一次都会判断一次客户端是否断开连接。如果没有断开连接,子进程继续提供服务。如果连接已断开,子进程向父进程发送完成服务,等待从新分配任务的指令。
步骤211子进程通过套接字向父进程发送完成服务,等待分配任务的指令。
每个子进程单独为一个客户端服务,保证了服务器整体的稳定性。同时,子进程提供断点上传和下载的功能,在网络较差的环境里提高了稳定性。
图3示出了本发明实施例提供的一种内网文件远程访问的方法中客户端实现流程,具体包括:
步骤301客户端程序开始运行。
步骤302客户端程序向服务器发送服务请求。
步骤303如果连接成功,执行正常的ftp服务流程。如果连接失败,客户端在终端上打印错误信息,并退出程序。
步骤304连接成功后,等待用户输入指令。
步骤305收到用户指令后,客户端先对指令进行解析。
步骤306用户指令为退出程序。客户端断开与服务端的连接,并退出程序。
步骤307用户指令为显示当前路径的指令。客户端向服务器端发送显示当前路径的请求。
步骤308用户指令为显示当前路径下所有文件夹和文件详情的指令。客户端向服务器端发送显示当前路径下所有文件夹和文件详情的请求。
步骤309用户指令为进入当前路径下的某一文件夹的指令。客户端向服务器端发送进入当前路径下的某一文件夹的请求。
步骤310用户指令为下载当前路径下某一文件的指令。客户端向服务器端发送下载当前路径下某一文件的请求。如果客户端发现本地存在该文件则向服务器进行反馈并停止下载,如果客户端发现本地存在该文件的不完整版本,则从断点处开始下载。
步骤311用户指令为上传文件的指令。客户端向服务器端发送上传文件的请求。如果服务器反馈已存在该文件则停止上传,如果服务器反馈存在未上传完成的文件,则从服务器反馈的断点处进行上传。
步骤312用户指令为删除当前文件夹下某文件的指令。客户端向服务器端发送删除当前文件夹下某文件的请求。
步骤313接收服务端的服务结果。在终端打印当前路径。
步骤314接收服务端的服务结果。在终端打印文件和文件夹的详情。
步骤315接收服务端的服务结果。在终端打印当前路径。
步骤316接收服务端的服务结果。接收服务端发来的文件并保存。如果发来的为错误信息,则在终端打印错误信息。
步骤317接收服务端的服务结果。开始上传文件。
步骤318接收服务端的服务结果。接收服务器的反馈信息,在终端上打印是否已删除。
步骤319客户端和服务端连接失败,在终端上打印错误信息。
步骤320终止客户端进程。
客户端和服务器程序相匹配可以提供断点上传和下载功能。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。