最重要的配置步骤是决定允许哪些帐号访问 FTP 服务器。 一般的 FreeBSD 系统包含了一系列系统帐号分别用于执行不同的服务程序,但未知的用户不应被允许登录并使用这些帐号。 /etc/ftpusers 文件中, 列出了不允许通过 FTP 访问的用户。 默认情况下, 这包含了前述的系统帐号,但也可以在这里加入其它不应通过 FTP 访问的用户。 您可能会希望限制通过 FTP 登录的某些用户, 而不是完全阻止他们使用 FTP。 这可以通过 /etc/ftpchroot 文件来完成。 这一文件列出了希望对 FTP 访问进行限制的用户和组的表。 而在 ftpchroot 联机手册中, 已经对此进行了详尽的介绍, 故而不再赘述。 如果您想要在服务器上启用匿名的 FTP 访问, 则必须建立一个名为 ftp 的 FreeBSD 用户。 这样, 用户就可以使用 ftp 或 anonymous 和任意的口令 (习惯上,应该是以那个用户的邮件地址作为口令) 来登录和访问您的 FTP 服务器。 FTP 服务器将在匿名用户登录时调用 chroot,以便将其访问限制在 ftp 用户的主目录中。 有两个文本文件可以用来指定显示在 FTP 客户程序中的欢迎文字。 /etc/ftpwelcome 文件中的内容将在用户连接上之后,在登录提示之前显示。 在成功的登录之后, 将显示 /etc/ftpmotd 文件中的内容。 请注意后者是相对于登录环境的, 因此对于匿名用户而言, 将显示 ~ftp/etc/ftpmotd。 一旦正确地配置了 FTP 服务器, 就必须在 /etc/inetdconf 中启用它。 这里需要做的全部工作就是将注释符 “#” 从已有的 ftpd 行之前去掉:ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
在设置了上述变量之后,独立的服务将在下次系统重启的时候启动, 或者通过以 root 身份手动执行如下的命令启动:# /etc/rcd/ftpd start
现在可以通过输入下面的命令来登录您的 FTP 服务器了:% ftp localhost维护
ftpd 服务程序使用 syslog 来记录消息。默认情况下, 系统日志将把和 FTP 相关的消息记录到 /var/log/xferlog 文件中。 FTP 日志的位置, 可以通过修改 /etc/syslogconf 中如下所示的行来修改:ftpinfo /var/log/xferlog
一定要小心对待在匿名 FTP 服务器中可能遇到的潜在问题。 一般而言,允许匿名用户上传文件应三思。 您可能发现自己的 FTP 站点成为了交易未经授权的商业软件的论坛, 或发生更糟糕的情况。 如果不需要匿名的 FTP 上传,可以在文件上配置权限, 使得您能够在其它匿名用户能够下载这些文件之前复查它们。 本文由广州北大青鸟天河培训中心整理发布。基于p2p的即时聊天和文件传输软件
摘 要
随着计算机网络技术的飞速发展,人们对于网络的依赖性也越来越大。通过网络的即时通信也越来越受到人们的喜爱,比如说现在非常流行的QQ即时通信软件就解决了人们在网络中交流的需求。
基于p2p的即时聊天和文件传输软件,是基于tcp/ip协议中的tcp和udp协议完成的一个能够完成即时通信和传输文件的软件,该软件实现了局域网内的通行,在不需要使用公网的情况下,使用该软件作为通信和传输文件的工具,既简单又安全。
该软件采用了通信模型中的p2p模型,使用java语言实现,实现原理较简单功能较单一,界面美化度较低。是一款简单的即时通信和文件传输软件。
关键词: 计算机网络 ; p2p ; tcp ; udp ; 通信和文件传输软件
目 录
1 引言 1
11 课题背景 1
12 国内外现状 1
13 本课题研究的迫切性 1
14 本文的主要工作 1
2需求分析和开发工具 1
21需求分析 1
22开发工具 2
3系统总体结构设计 3
31 基本简介 3
32 系统功能模块设计 3
33 功能模块介绍 4
4系统流程与实现 5
41 系统设计流程 5
411 即时聊天功能的流程设计5
412 文件传输功能系统实现6
42实现 8
5 测试 10
结 论 13
参考文献 13
1 引言
11 课题背景
网络的发展促进了通信的发中,通信的发展反过来让网络发展的更大更快,通信作为我们日常生活中不可或缺的东西,正在改变着人们的生活。比如说QQ即时通信软件就为人们的生活和学习带来了极大的方便。但是人们有时需要和与自己同一个局域网内的用户通信而通信的内容不通过公网来保证通信的安全,防止黑客或者一些心怀不轨的人通过非法的手段获取到通信的内容。因为一旦信息泄露了就有可能带来不可估量的损失。在这种情况下,基于p2p的即时聊天和文件传输的软件就产生了。
12 国内外现状
网络的普及也让一些人获得了获取了更多的信息。通过窃听,篡改,重放等攻击
的手机来阻止,或者是窃取别人的有用信息,这种事在一些大型的公司里曾经就发生过。现在一些大型的公司自己会去开发适合自己公司的即时通信软件来防止此类的安全事件出现,因此基于p2p的即时聊天和文件传输的应用开发现在仍然受到关注。
13 本课题研究的迫切性
基于p2p的即时聊天和文件传输软件的实现能够帮助我们了解基于p2p的软件的实现原理和过程,为我们以后开发一些大型的p2p的软件提供了技术上的保证。同时该软件能够用于局域网的通信和传输文件,具有一定的实际意义。
14 本文的主要工作
本文主要介绍了基于p2p的即时聊天和文件传输的软件的实现原理和实现的过
程,针对软件的原理和过程进行深入的讲解。同时本文可以作为基于p2p的即时聊天和文件传输的软件的使用说明书,通过具体而详细的阐述,让大家更容易的理解基于p2p的即时聊天和文件传输的软件的实现原理和实现的过程。
2需求分析和开发工具
21需求分析
由于国内外的安全现状不容乐观,人们通信的时的信息很容易会被黑客们获取,为
了在局域网中安全简单的痛信,人们就开发了基于p2p的即时通信和文件传输软件。该软件能够实现在局域网内和其他人通信,从而保证了通信的安全,让人们拥有更加安全和简单的痛信环境。同时,由于该软件是使用java语言开发,具有平台无关性。能够在不同的 *** 作系统的平台下完成即时通信和文件传输的功能。
22.p2p的即时聊天和文件传输软件的功能
p2p的即时聊天和文件传输软件有以下功能:
(1)局域网内点对点通信,
能够同一时间和多个人,在不同的ip和端口上实现通信
(2)简单文件传输
能够传输1M以上的文件
(3)能够在多个平台下实现通信
Java平台无关性
22开发工具
开发环境 java
开发工具 Myeclipse
TCP协议的工作流程下图所示:
UDP协议的工作流程下图所示:
3系统总体结构设计
31 基本简介
p2p的即时聊天和文件传输软件采用tcp和udp协议,使用java语言实现基于p2p的
即时聊天和文件传输的功能。同时,由于采用java语言实现具备了在多种平台下运行的优点。该软件主要包括两大部分,聊天部分和文件传输部分。聊天部分采用了udp协议,文件传输部分采用了tcp协议。
32 系统功能模块设计
p2p的即时聊天和文件传输软件实现了以下功能
(1)即时聊天功能
(2)文件传输功能
(3)记录查询聊天内容
33 功能模块介绍
即时聊天功能采用udp协议实现。聊天时用户必须输入通信对方的ip和端 口号 ,对
方只需要知道消息发送方的端口号,就能够收到信息。对方收到信息后,同样必须输入ip才能回复消息给对方。通信模型如下图
聊天功能实现模型图
文件传输功能是采用tcp协议实现的,tcp协议的面向连接,可靠性,面向字节流
等优点,以及差错控制,流量控制等特点,保证了文件传输的可靠性。整个流程是,文件发送方首先选择文件,在选择文件后,先发送文件的名称和大小给接收者。接收这如果同意接收文件则由接收者作为客户端向发送端发起连接,连接建立后,发送端开始传送文件给接收端。实现模型如下图所示
文件传输功能
4系统流程与实现
41 系统设计流程
411 即时聊天功能的流程设计
采用DUP协议设计即时聊天功能,在即时聊天功能中,设计了一个发送端和一个接收端,发送端和接收端处于同一个平台中,为了使通信双方能够造一次连接中进行多次通信在接收端采用了多线程,实现多次通信。
在通信建立的时候,通信的发起方首先填写通信的ip地址和port端口,然后发送消息给接收者。接受者需要在同样的端口上等待发起者的信息。
发送端:
发送端工作流程图
接收端:
接收端工作流程图 412 文件传输功能系统实现
使用TCP协议实现文件传输功能,在文件传输开始时,由发送方给接收方发送一个消息,消息内容为待发送文件的文件名和长度。接收端收到后判断是不是传送的文件,如果是传送的文件接收方择是否接收文件。然后开始传输文件,文件传输完成后,自动关闭服务器端和客户端。
发送端:
接收端:文件传输发送端工作流程
N
42实现
基于p2p的即时通信和文件传输软件的实现是采用窗体的形式。在实现过程中设计到几点主要的功能
首先即时通信功能的发送端的实现,首先创建DUP的socket套接字和UDP
数据报包
在数据包中写入消息发送到接收端。
主要实现代码:
public void send() throws Exception{
DatagramSocket ds2=new DatagramSocket();
DatagramPacket dp2=new DatagramPacket(strmsggetBytes(),
strmsggetBytes()length,InetAddressgetByName(ip),port);
ds2send(dp2);
ds2close();
}
接收端,还是创建DUP的socket套接字和UDP数据报包,然后接收数据。 DatagramSocket ds=new DatagramSocket(port);//udp的socket
DatagramPacket dp=new 套接字
DatagramPacket(buf,buflength);//udp数据报包
dsreceive(dp);
传送文件的实现过程:
发送文件的窗体采用另一个frame完成,在frame中完成了,选择和发送文件
sendmessage sm = new
sendmessage("file"+filepathgetText()toString(),
mainFrameipgetText(),IntegerparseInt(mainFrameportgetText()toString()));
smsend();
ServerSock ss=new
ServerSock(IntegerparseInt(mainFrameportgetText()toString()),filepathgetText()toString());
ssstart();
选择文件后,发送端使用UDP发送文件名和文件大小给接收端。如果接收端确认,就开始传输文件
接收后,显示的接收和拒接的信息,以供接收端接收
if(new String(buf)substring(0, 4)equals("file")){ mainFramejieshoufilesetText("收到文件:"+str+"是否接收?");
mainFramejieshouwenjiansetEnabled(true); mainFramejieshouwenjiansetEnabled(true);
mainFramejieshouwenjiansetText("接收"); mainFramejujuesetText("拒绝"); }
接收端点击接受后,创建clientsocket去连接服务器端,然后服务器开始传送文件
new Client(jfcgetSelectedFile()getPath())
接收数据
public DataInputStream getMessageStream() throws Exception {
try {
getMessageStream = new DataInputStream(new
BufferedInputStream(socketgetInputStream()));
return getMessageStream;
} catch (Exception e) {
eprintStackTrace();
if (getMessageStream != null)
getMessageStreamclose();
throw e;
} finally {
}
写入到文件
while (true) {
int read = 0;
if (inputStream != null) {
read = inputStreamread(buf);
}
passedlen += read;
if (read == -1) {
peak;
}
5 测试
软件界面,发送端和接收采用一个软件进行通信。
发送端:
接收端:
文件发送端
文件接收端
结 论
基于p2p的即时聊天和文件传输的软件有效解决了局域网内通信的问题,实现了局域网内即时聊天和文件传输。在软件实现的过程充分运用了在网络编程中学习的TCP和UDP的socket编程,并把二者有效的结合。通过这次课程设计,也掌握了文件传输和聊天的过程中的java实现。在设计过程中查阅了相关的java API和一些实现即时聊天和文件传输的例子,从中学习到了很多书本上没有的知识。为自己在以后的软件开发中积累了一些经验。
同时软件的设计和实现过程中也存在很多问题。比如,人机交互界面的设计不是很合理,在文件传输时就不能做其他的事情。没有运用多线程实现等等。这些问题说明了我在平时的学习中还需要合理有效的运用所学知识去设计和实现。
参考文献
[1]甘刚Linux/NUIX网络编程[M].北京:中国水利水电出版社,2008。
[2] 叶树华.网络编程实用教程[M].北京:人民邮电大学出版社,2010。
[3] 杜佳荣, 马建红, 滕振宇.Java网络编程技术与实践[M].北京:清华大学出版社,2008。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)