局域网 文件传输【基于p2p的局域网聊天和文件传输软件】

 我来答
测评师阿强
2023-03-04 · TA获得超过288个赞
知道小有建树答主
回答量:1842
采纳率:100%
帮助的人:116万
展开全部
基于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的即时通信和文件传输软件。该软件能够实现在局域网内和其他人通信,从而保证了通信的安全,让人们拥有更加安全和简单的痛信环境。同时,由于该软件是使用java语言开发,具有平台无关性。能够在不同的操作系统的平台下完成即时通信和文件传输的功能。

2.2.p2p的即时聊天和文件传输软件的功能

p2p的即时聊天和文件传输软件有以下功能:

(1)局域网内点对点通信,

能够同一时间和多个人,在不同的ip和端口上实现通信

(2)简单文件传输

能够传输1M以上的文件

(3)能够在多个平台下实现通信

Java平台无关性

2.2开发工具

开发环境 java

开发工具 Myeclipse

TCP协议的工作流程下图所示:

UDP协议的工作流程下图所示:

3.系统总体结构设计

3.1 基本简介

p2p的即时聊天和文件传输软件采用tcp和udp协议,使用java语言实现基于p2p的

即时聊天和文件传输的功能。同时,由于采用java语言实现具备了在多种平台下运行的优点。该软件主要包括两大部分,聊天部分和文件传输部分。聊天部分采用了udp协议,文件传输部分采用了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的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) {

peak;

}

5 .测试

软件界面,发送端和接收采用一个软件进行通信。

发送端:

接收端:

文件发送端

文件接收端

结 论

基于p2p的即时聊天和文件传输的软件有效解决了局域网内通信的问题,实现了局域网内即时聊天和文件传输。在软件实现的过程充分运用了在网络编程中学习的TCP和UDP的socket编程,并把二者有效的结合。通过这次课程设计,也掌握了文件传输和聊天的过程中的java实现。在设计过程中查阅了相关的java API和一些实现即时聊天和文件传输的例子,从中学习到了很多书本上没有的知识。为自己在以后的软件开发中积累了一些经验。

同时软件的设计和实现过程中也存在很多问题。比如,人机交互界面的设计不是很合理,在文件传输时就不能做其他的事情。没有运用多线程实现等等。这些问题说明了我在平时的学习中还需要合理有效的运用所学知识去设计和实现。

参考文献

[1]甘刚.Linux/NUIX网络编程[M].北京:中国水利水电出版社,2008。

[2] 叶树华.网络编程实用教程[M].北京:人民邮电大学出版社,2010。

[3] 杜佳荣, 马建红, 滕振宇.Java网络编程技术与实践[M].北京:清华大学出版社,2008。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
镭速传输
2024-10-28 广告
作为深圳市云语科技有限公司的一员,我们专注于提供高效的FTP加速传输解决方案。我们采用的创新技术,如多线程传输和智能压缩,能显著提升FTP传输速率,减少传输时间与带宽占用,确保数据快速、安全地传输。我们的方案简单易用,与现有FTP系统无缝对... 点击进入详情页
本回答由镭速传输提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式