用Java实现Socket及ftp下载

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

用JAVA实现Socket通讯及Ftp下载需求分析在大亚湾实时数据接收过程中,Unix工作站中通过API调用从进程中实时获取各个测点的实时数据,并将数据以文件的形式保存到Ftp目录中。Unix通知Windows(Windows2000)平台从ftp上下载数据文件。我们要完成的工作是,通过协议完成Unix与Windows平台的通讯,然后,控制Windows平台从ftp上下载指定文件。解决方案考虑到文件是在异构系统(UNIX与WINDOWS)之间传输,为了有更好的移植性,我们决定用JAVA进行开发。要解决通讯,首先设置好协议。根据需求,协议是这样定义的:消息格式:消息头消息号数据块其中,消息头固定为“kdc”。消息号为通知对方的行动信号。AskForDownload=1;WaitForDownload=2;AllowDownload=81;DownloadFile=82;以上为常数。数据块为用于进行FTP操作的参数(若为空则以“#”表示)。通讯方式:服务器通知客户端下载。客户端向服务器提出下载申请,消息中包含有用户名。服务器收到从客户端发来的消息后,对客户进行身份验证,若通过则向客户端发出允许下载的消息,将下载文件的路径传给客户端;客户端收到允许下载消息后,便准备下载,将准备下载的消息传给服务器;服务器收到消息后,将口令传给用户;用户收到后,开始下载。具体实现用JAVA实现SOCKET通讯及FTP下载,需要引用以下包:java.io.*;java.net.*;sun.net.*;sun.net.ftp.*;Socket操作的步骤:(1)打开一个Socket。(2)打开输入输出流。(3)通过服务协议读写流。(4)关闭流。(5)关闭Socket。Ftp操作步骤:(1)连接Ftp服务器。(2)打开流,创建一个文件实例。(3)将Ftp上的文件写入流,然后在从流写到客户端的文件实例中。(4)关闭流。(5)关闭Ftp服务。对消息的解析消息中包含有三部分内容:头部,消息号,数据块。在发送时,消息是以字符串的形式传送的。所以首先,必须把三部分内容从消息中分离出来。我们的解决办法是引用java.util.*中的StringTokenizer类。先用消息字符串创建StringTokenizer的实例,然后用StringTokenizer类中的nexttoken()方法对其进行分离,在将三部分内容分别赋给三个已定义好的变量。将消息中的三部分分离出来后,将其传给协议类的action(Stringhead,Stringtype,Stringinfor)方法,根据不同的消息进行相应的行动。意外处理在进行通讯和进行FTP操作时,会出现一些意外,比如,创建端口错误,连接失败,消息格式不正确,连接FTP服务器是登录错误等。由于,双方的通讯均为自动进行,出现意外若将此操作重复,没有任何意义,只会导致死循环,所以,我们的做法是,停止通讯,发送报错消息,通知对方管理员,检查其通讯配置及消息格式是否正确,并做适当的修改,然后再重新进行通讯。安全问题这是我们在程序中没有解决的地方,具体表现在,服务器要将登录FTP的口令传送给客户端,由于没有加密措施,在传送过程中,可能会被窃取,这将导致可能会有其他机器访问FTP服务器。所以,这个问题,必须要解决。

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功