基于p2p的局域网聊天和文件传输软件
基于p2p的即时聊天和文件传输软件
摘要
随着计算机网络技术的飞速发展人们对于网络的依赖性也越来越大。通过网络的即时通信也越来越受到人们的喜爱 比如说现在非常流行的QQ即时通信软件就解决了人们在网络中交流的需求。
基于p2p的即时聊天和文件传输软件是基于tcp/ip协议中的tcp和udp协议完成的一个能够完成即时通信和传输文件的软件该软件实现了局域网内的通行在不需要使用公网的情况下使用该软件作为通信和传输文件的工具既简单又安全。
该软件采用了通信模型中的p2p模型使用java语言实现实现原理较简单功能较单一界面美化度较低。是一款简单的即时通信和文件传输软件。
关键词 计算机网络 p2p tcp udp 通信和文件传输软件
目录
1引
言. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
1. 1课题背
景. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
1.2国内外现
状. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
1.3本课题研究的迫切
性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 1
1.4本文的主要工
作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .1
2.需求分析和开发工
具. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .1
2. 1.需求分
析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
2.2开发工
具. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2
3.系统总体结构设
计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .3
3. 1基本简
介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
3.2系统功能模块设
计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .3
3.3功能模块介
绍. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .4
4.系统流程与实
现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .5
4. 1系统设计流
程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .5
4. 1. 1即时聊天功能的流程设
计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5
4. 1.2文件传输功能系统实
现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .6
4.2实
现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
5 .测
试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
结
论. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
参考文
献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
1引言
1. 1课题背景
网络的发展促进了通信的发中通信的发展反过来让网络发展的更大更快通信作为我们日常生活中不可或缺的东西正在改变着人们的生活。比如说QQ即时通信软件就为人们的生活和学习带来了极大的方便。但是人们有时需要和与自己同一个局域网内的用户通信而通信的内容不通过公网来保证通信的安全防止黑客或者一些心怀不轨的人通过非法的手段获取到通信的内容。因为一旦信息泄露了就有可能带来不可估量的损失。在这种情况下基于p2p的即时聊天和文件传输的软件就产生了。
1.2国内外现状
网络的普及也让一些人获得了获取了更多的信息。通过窃听篡改重放等攻击
的手机来阻止或者是窃取别人的有用信息这种事在一些大型的公司里曾经就发生过。现在一些大型的公司自己会去开发适合自己公司的即时通信软件来防止此类的安全事件出现因此基于p2p的即时聊天和文件传输的应用开发现在仍然受到关注。
1.3本课题研究的迫切性
基于p2p的即时聊天和文件传输软件的实现能够帮助我们了解基于p2p的软件的实现原理和过程为我们以后开发一些大型的p2p的软件提供了技术上的保证。 同时该软件能够用于局域网的通信和传输文件具有一定的实际意义。
1.4本文的主要工作
本文主要介绍了基于p2p的即时聊天和文件传输的软件的实现原理和实现的过
程针对软件的原理和过程进行深入的讲解。同时本文可以作为基于p2p的即时聊天和文件传输的软件的使用说明书通过具体而详细的阐述让大家更容易的理解基于p2p 的即时聊天和文件传输的软件的实现原理和实现的过程。
2.需求分析和开发工具
2. 1.需求分析
由于国内外的安全现状不容乐观人们通信的时的信息很容易会被黑客们获取为
了在局域网中安全简单的痛信人们就开发了基于p2p的即时通信和文件传输软件。该软件能够实现在局域网内和其他人通信从而保证了通信的安全让人们拥有更加安全和简单的痛信环境。 同时 由于该软件是使用j ava语言开发具有平台无关性。能够在不同的操作系统的平台下完成即时通信和文件传输的功能。
2.2 p2p的即时聊天和文件传输软件的功能p2p的即时聊天和文件传输软件有以下功能
1局域网内点对点通信
能够同一时间和多个人在不同的ip和端口上实现通信
2简单文件传输
能够传输1M以上的文件
3能够在多个平台下实现通信
Java平台无关性
2.2开发工具
开发环境j av a
开发工具Myeclipse
TCP协议的工作流程下图所示
UDP协议的工作流程下图所示
3.系统总体结构设计
3. 1基本简介p2p的即时聊天和文件传输软件采用tcp和udp协议使用java语言实现基于p2p的
即时聊天和文件传输的功能。 同时 由于采用java语言实现具备了在多种平台下运行的优点。该软件主要包括两大部分聊天部分和文件传输部分。聊天部分采用了u dp协议文件传输部分采用了tcp协议。
3.2系统功能模块设计p2p的即时聊天和文件传输软件实现了以下功能
1即时聊天功能
2文件传输功能
3记录查询聊天内容
3.3功能模块介绍
即时聊天功能采用udp协议实现。聊天时用户必须输入通信对方的ip和端口号对
方只需要知道消息发送方的端口号就能够收到信息。对方收到信息后 同样必须输入ip才能回复消息给对方。通信模型如下图
聊天功能实现模型图
文件传输功能是采用tcp协议实现的 tcp协议的面向连接可靠性面向字节流
等优点 以及差错控制流量控制等特点保证了文件传输的可靠性。整个流程是文件发送方首先选择文件在选择文件后先发送文件的名称和大小给接收者。接收这如果同意接收文件则由接收者作为客户端向发送端发起连接连接建立后发送端开始传送文件给接收端。实现模型如下图所示
文件传输功能
4.系统流程与实现
4. 1系统设计流程
4. 1. 1即时聊天功能的流程设计
采用DUP协议设计即时聊天功能在即时聊天功能中设计了一个发送端和一个接收端发送端和接收端处于同一个平台中为了使通信双方能够造一次连接中进行多次通信在接收端采用了多线程实现多次通信。
在通信建立的时候通信的发起方首先填写通信的ip地址和port端口然后发送消息给接收者。接受者需要在同样的端口上等待发起者的信息。
发送端
发送端工作流程图
接收端
接收端工作流程图4. 1. 2文件传输功能系统实现
使用TCP协议实现文件传输功能在文件传输开始时 由发送方给接收方发送一个消息消息内容为待发送文件的文件名和长度。接收端收到后判断是不是传送的文件如果是传送的文件接收方择是否接收文件。然后开始传输文件文件传输完成后 自动关闭服务器端和客户端。
发送端
接收端文件传输发送端工作流程
N
4.2实现
基于p2p的即时通信和文件传输软件的实现是采用窗体的形式。在实现过程中设计到几点主要的功能
首先即时通信功能的发送端的实现首先创建DUP的so cket套接字和UDP
数据报包
在数据包中写入消息发送到接收端。
主要实现代码public void send() throws Exception{
DatagramSocket ds2=new DatagramSocket() ;
DatagramPacket dp2=new DatagramPacket(strmsg.getBytes() ,strmsg.getBytes() . length, InetAddress.getByName(ip) ,port) ;ds2. send(dp2) ;ds2.close() ;
}
接收端还是创建DUP的s o c k e t套接字和UDP数据报包然后接收数据。
DatagramSocket ds=new DatagramSocket(port) ;//udp的socket
DatagramPacket dp=new套接字
DatagramPacket(buf,buf. l ength) ;//udp数据报包
ds.receive(dp) ;
传送文件的实现过程
发送文件的窗体采用另一个f rame完成在frame中完成了选择和发送文件sendmessage sm = new sendmessage("fi le"+filepath.getText() .toString() ,mainFrame. ip.getText() , Integer.parseInt(mainFrame.port.getText() .toString() )) ;sm. send() ;
ServerSock ss=new
ServerSock(Integer.parseInt(mainFrame.port.getText() .toString() ) ,f ilepath.getT ext() .toString() ) ;ss. start() ;
选择文件后发送端使用UDP发送文件名和文件大小给接收端。如果接收端确认就开始传输文件
接收后显示的接收和拒接的信息 以供接收端接收if(new String(buf) . substring(0,
4) .equals("fi le")) { mainFrame. j ieshoufile. setText("收到文件:"+str+"是否接收") ;mai nFrame. j i eshouwenj ian. se tEnabl ed(true) ;mainFrame. j ie shouwenj i an. setEnabled(true) ;mainFrame. ji eshouwenj ian. setText("接收") ; mainFrame. jujue. setText("拒绝") ; }
接收端点击接受后创建clientsocket去连接服务器端然后服务器开始传送文件new Client(jfc.getSelectedFile() .getPath() )
接收数据public DataInputStream getMessageStream() throws Exception {try {
getMessageStream= new DataInputStream(new BufferedInputStream(socket.getInputStream()) ) ;return getMessageStream;
} catch (Exception e) {e.printStackTrace() ;if (getMessageStream != nul l)getMessageStream.close() ;throw e;
} finally {
}
写入到文件while (true) {int read = 0;if (inputStream != null) {read = inputStream.read(buf) ;
}passedlen += read;if (read == -1) {bre ak;
}
5 .测试
软件界面发送端和接收采用一个软件进行通信。发送端
接收端
文件发送端
文件接收端
结论
基于p2p的即时聊天和文件传输的软件有效解决了局域网内通信的问题实现了局域网内即时聊天和文件传输。在软件实现的过程充分运用了在网络编程中学习的TCP和UD P 的socket编程并把二者有效的结合。通过这次课程设计也掌握了文件传输和聊天的过程中的java实现。在设计过程中查阅了相关的java API和一些实现即时聊天和文件传输的例子从中学习到了很多书本上没有的知识。为自己在以后的软件开发中积累了一些经验。
同时软件的设计和实现过程中也存在很多问题。 比如人机交互界面的设计不是很合理在文件传输时就不能做其他的事情。没有运用多线程实现等等。这些问题说明了我在平时的学习中还需要合理有效的运用所学知识去设计和实现。
参考文献
[1]甘刚.Linux/NUIX网络编程[M] 北京 中国水利水电出版社 2019。
[2]叶树华 网络编程实用教程[M] 北京人民邮电大学出版社 2019。
[3]杜佳荣, 马建红,滕振宇 Java网络编程技术与实践[M] 北京清华大学出版社 2019。
久久网云怎么样?久久网云好不好?久久网云是一家成立于2017年的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务,久久网云目前提供有美国免费主机、香港主机、韩国服务器、香港服务器、美国云服务器,香港荃湾CN2弹性云服务器。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松快捷运用云计算!多年云计算领域服务经验,遍布亚太地区的海量节点为...
前几天有关注到Megalayer云服务器提供商有打算在月底的时候新增新加坡机房,这个是继美国、中国香港、菲律宾之外的第四个机房。也有工单询问到官方,新加坡机房有包括CN2国内优化线路和国际带宽,CN2优化线路应该是和菲律宾差不多的。如果我们追求速度和稳定性的中文业务,建议还是选择CN2优化带宽的香港服务器。这里有要到Megalayer新加坡服务器国际带宽的测试服务器,E3-1230配置20M国际带...
hosthatch在做美国独立日促销,可能你会说这操作是不是晚了一个月?对,为了准备资源等,他们拖延到现在才有空,这次是针对自己全球14个数据中心的VPS。提前示警:各个数据中心的网络没有一个是针对中国直连的,都会绕道而且ping值比较高,想买的考虑清楚再说!官方网站:https://hosthatch.com所有VPS都基于KVM虚拟,支持PayPal在内的多种付款方式!芝加哥(大硬盘)VPS5...