为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于p2p的局域网聊天和文件传输软件[精品]

2018-03-02 15页 doc 84KB 31阅读

用户头像

is_633423

暂无简介

举报
基于p2p的局域网聊天和文件传输软件[精品]基于p2p的局域网聊天和文件传输软件[精品] 基于p2p的即时聊天和文件传输软件 摘 要 随着计算机网络技术的飞速发展,人们对于网络的依赖性也越来越大。通过网络的即时通信也越来越受到人们的喜爱,比如说现在非常流行的QQ即时通信软件就解决了人们在网络中交流的需求。 基于p2p的即时聊天和文件传输软件,是基于tcp/ip协议中的tcp和udp协议完成的一个能够完成即时通信和传输文件的软件,该软件实现了局域网内的通行,在不需要使用公网的情况下,使用该软件作为通信和传输文件的工具,既简单又安全。 该软件采用了通信模型中的p2...
基于p2p的局域网聊天和文件传输软件[精品]
基于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.系统总体结构设计 .................................................................. 4 3.1 基本简介 .......................................................................... 4 3.2 系统功能模块设计 .......................................................... 4 3.3 功能模块介绍 .................................................................. 5 4.系统流程与实现 ...................................................................... 6 4.1 系统设计流程 .................................................................. 6 4.1.1 即时聊天功能的流程设计 ......................................... 6 4.1.2 文件传输功能系统实现 ............................................. 7 4.2实现 ................................................................................... 9 5 .测试........................................................................................ 11 结 论 ................................................................................... 14 参考文献 ................................................................................... 14 1 引言 1.1 课题背景 网络的发展促进了通信的发中,通信的发展反过来让网络发展的更大更快,通信 作为我们日常生活中不可或缺的东西,正在改变着人们的生活。比如说QQ即时通信 软件就为人们的生活和学习带来了极大的方便。但是人们有时需要和与自己同一个局 域网内的用户通信而通信的内容不通过公网来保证通信的安全,防止黑客或者一些心 怀不轨的人通过非法的手段获取到通信的内容。因为一旦信息泄露了就有可能带来不 可估量的损失。在这种情况下,基于p2p的即时聊天和文件传输的软件就产生了。 1.2 国内外现状 网络的普及也让一些人获得了获取了更多的信息。通过窃听,篡改,重放等攻击 的手机来阻止,或者是窃取别人的有用信息,这种事在一些大型的公司里曾经就发生 过。现在一些大型的公司自己会去开发适合自己公司的即时通信软件来防止此类的安 全事件出现,因此基于p2p的即时聊天和文件传输的应用开发现在仍然受到关注。 1.3 本课题研究的迫切性 基于p2p的即时聊天和文件传输软件的实现能够帮助我们了解基于p2p的软件的 实现原理和过程,为我们以后开发一些大型的p2p的软件提供了技术上的保证。同时 该软件能够用于局域网的通信和传输文件,具有一定的实际意义。 1.4 本文的主要工作 本文主要介绍了基于p2p的即时聊天和文件传输的软件的实现原理和实现的过 程,针对软件的原理和过程进行深入的讲解。同时本文可以作为基于p2p的即时聊天 和文件传输的软件的使用说明书,通过具体而详细的阐述,让大家更容易的理解基于 p2p的即时聊天和文件传输的软件的实现原理和实现的过程。 2.需求分析和开发工具 2.1.需求分析 由于国内外的安全现状不容乐观,人们通信的时的信息很容易会被黑客们获取,为 了在局域网中安全简单的痛信,人们就开发了基于p2p的即时通信和文件传输软件。 该软件能够实现在局域网内和其他人通信,从而保证了通信的安全,让人们拥有更加 安全和简单的痛信环境。同时,由于该软件是使用java语言开发,具有平台无关性。 能够在不同的操作系统的平台下完成即时通信和文件传输的功能。 2.2(p2p的即时聊天和文件传输软件的功能 p2p的即时聊天和文件传输软件有以下功能: (1)局域网内点对点通信, 能够同一时间和多个人,在不同的ip和端口上实现通信 (2)简单文件传输 能够传输1M以上的文件 (3)能够在多个平台下实现通信 Java平台无关性 2.2开发工具 开发环境 java 开发工具 Myeclipse TCP协议的工作流程下图所示: 服务器端 客户端 用socket建立套接字 用bind方法把套接字与本 地地址绑定 用Listen方法准备好连接 用accept方法接受连接,用socket方法建立套接字 并等待client端连接 如连接已建立,accept返回用connect方法把套接字与进行连接 server端相连 新的套接字 用Receive和send方法在用Receive和send方法在数据交换 套接字上做数据交换 套接字上做数据交换 Shutdown方法用于释放连Shutdown方法用于释放连 接 接 关闭套接字,服务结束 关闭套接字,服务结束 UDP协议的工作流程下图所示: 服务器端 客户端 用socket方法建立套接字 用socket方法建立套接字 用bind方法把套接字与本用bind方法把套接字与本地地址绑定 地地址绑定 用Receive和send方法在用Receive和send方法在 数据传送 套接字上做数据交换 套接字上做数据交换 Shutdown方法用于释放连Shutdown方法用于释放连接 接 关闭套接字,服务结束 关闭套接字,服务结束 3.系统总体结构设计 3.1 基本简介 p2p的即时聊天和文件传输软件采用tcp和udp协议,使用java语言实现基于p2p的 即时聊天和文件传输的功能。同时,由于采用java语言实现具备了在多种平台下运行 的优点。该软件主要包括两大部分,聊天部分和文件传输部分。聊天部分采用了udp 协议,文件传输部分采用了tcp协议。 3.2 系统功能模块设计 p2p的即时聊天和文件传输软件实现了以下功能 (1)即时聊天功能 (2)文件传输功能 (3)记录查询聊天内容 3.3 功能模块介绍 即时聊天功能采用udp协议实现。聊天时用户必须输入通信对方的ip和端口号,对方只需要知道消息发送方的端口号,就能够收到信息。对方收到信息后,同样必须输入ip才能回复消息给对方。通信模型如下图 Port Port 软件 软件 对方 对方 Ip Ip 聊天功能实现模型图 文件传输功能是采用tcp协议实现的,tcp协议的面向连接,可靠性,面向字节流等优点,以及差错控制,流量控制等特点,保证了文件传输的可靠性。整个流程是,文件发送方首先选择文件,在选择文件后,先发送文件的名称和大小给接收者。接收这如果同意接收文件则由接收者作为客户端向发送端发起连接,连接建立后,发送端开始传送文件给接收端。实现模型如下图所示 发送文件 选择文件 名和大小 软件 发送者A 同意接收 连接发送端 开始传送文件 选择文件接收者B 保存路径 文件传输功能 4.系统流程与实现 4.1 系统设计流程 4.1.1 即时聊天功能的流程设计 采用DUP协议设计即时聊天功能,在即时聊天功能中,设计了一个发送端和一个接收端,发送端和接收端处于同一个平台中,为了使通信双方能够造一次连接中进行多次通信在接收端采用了多线程,实现多次通信。 在通信建立的时候,通信的发起方首先填写通信的ip地址和port端口,然后发送消息给接收者。接受者需要在同样的端口上等待发起者的信息。 发送端: 开始 从发送窗口中读入数据 Sendmessage调用UDP DatagramSocket DatagramPacket 调用Send方法发送数据 调用close方法关闭发送端 结束 发送端工作流程图 接收端: 开始 DatagramSocket DatagramPacket 调用receive方法接收数据,存入buf中 N 显示内容 是否收到文件文 件 Y 进入文件接 收区 调用close方法关闭接收方 端 结束 接收端工作流程图 4.1.2 文件传输功能系统实现 使用TCP协议实现文件传输功能,在文件传输开始时,由发送方给接收方发送一个消息, 消息内容为待发送文件的文件名和长度。接收端收到后判断是不是传送的文件,如果是传送 的文件接收方择是否接收文件。然后开始传输文件,文件传输完成后,自动关闭服务器端和 客户端。 发送端: 开始 选择文件 发送文件名和文件大小 等待对方接收 是否接收 Y N 发送文件 调用ServerSocket创建服务器端 调用getOutputStream()发送文件 将文件的内容读取到buf中 通过write(buf, 0, read)方法发送文件内容 关闭发送端serversocket和server 结束 文件传输发送端工作流程 接收端: 开始 接收文件名和文件大小 显示文件名和大小 是否接收 Y N 创建socket 调用getInputStream()方法接收内容 调用getInputStream发送文件 将文件的内容读取到buf中 将文件写入本地磁盘 关闭客服端 结束 4.2实现 基于p2p的即时通信和文件传输软件的实现是采用窗体的形式。在实现过程 中设计到几点主要的功能 首先即时通信功能的发送端的实现,首先创建DUP的socket套接字和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的socket套接字和UDP数据报包,然后接收数据。 DatagramSocket ds=new DatagramSocket(port);//udp的socket套接字 DatagramPacket dp=new DatagramPacket(buf,buf.length);//udp数据报包 ds.receive(dp); 传送文件的实现过程: 发送文件的窗体采用另一个frame完成,在frame中完成了,选择和发送文件 sendmessage sm = new sendmessage("file"+filepath.getText().toString(), mainFrame.ip.getText(),Integer.parseInt(mainFrame.port.getText().toString())); sm.send(); ServerSock ss=new ServerSock(Integer.parseInt(mainFrame.port.getText().toString()),filepath.getText().toString()); ss.start(); 选择文件后,发送端使用UDP发送文件名和文件大小给接收端。如果接收端确认,就开始传输文件 接收后,显示的接收和拒接的信息,以供接收端接收 if(new String(buf).substring(0, 4).equals("file")){ mainFrame.jieshoufile.setText("收到文 件:
"+str+"
是否接收,"); mainFrame.jieshouwenjian.setEnabled(true); mainFrame.jieshouwenjian.setEnabled(true); mainFrame.jieshouwenjian.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 != null) getMessageStream.close(); throw e; } finally { } 写入到文件 while (true) { int read = 0; if (inputStream != null) { read = inputStream.read(buf); } passedlen += read; if (read == -1) { break; } 5 .测试 软件界面,发送端和接收采用一个软件进行通信。 发送端: 接收端: 文件发送端 文件接收端 结 论 基于p2p的即时聊天和文件传输的软件有效解决了局域网内通信的问题,实现了局域网内即时聊天和文件传输。在软件实现的过程充分运用了在网络编程中学习的TCP和UDP的socket编程,并把二者有效的结合。通过这次课程设计,也掌握了文件传输和聊天的过程中的java实现。在设计过程中查阅了相关的java API和一些实现即时聊天和文件传输的例子,从中学习到了很多书本上没有的知识。为自己在以后的软件开发中积累了一些经验。 同时软件的设计和实现过程中也存在很多问题。比如,人机交互界面的设计不是很合理,在文件传输时就不能做其他的事情。没有运用多线程实现等等。这些问题说明了我在平时的学习中还需要合理有效的运用所学知识去设计和实现。 参考文献 [1]甘刚.Linux/NUIX网络编程[M](北京:中国水利水电出版社,2008。 [2] 叶树华(网络编程实用教程[M](北京:人民邮电大学出版社,2010。 [3] 杜佳荣, 马建红, 滕振宇(Java网络编程技术与实践[M](北京:清华大学出版社,2008。
/
本文档为【基于p2p的局域网聊天和文件传输软件[精品]】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索