局域网飞鸽传书软件的设计与实现.docx

上传人:b****7 文档编号:8793136 上传时间:2023-02-01 格式:DOCX 页数:29 大小:182.94KB
下载 相关 举报
局域网飞鸽传书软件的设计与实现.docx_第1页
第1页 / 共29页
局域网飞鸽传书软件的设计与实现.docx_第2页
第2页 / 共29页
局域网飞鸽传书软件的设计与实现.docx_第3页
第3页 / 共29页
局域网飞鸽传书软件的设计与实现.docx_第4页
第4页 / 共29页
局域网飞鸽传书软件的设计与实现.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

局域网飞鸽传书软件的设计与实现.docx

《局域网飞鸽传书软件的设计与实现.docx》由会员分享,可在线阅读,更多相关《局域网飞鸽传书软件的设计与实现.docx(29页珍藏版)》请在冰豆网上搜索。

局域网飞鸽传书软件的设计与实现.docx

局域网飞鸽传书软件的设计与实现

局域网飞鸽传书软件的设计与实现

摘要

网络通讯在当今已经不算新鲜事物,但大多数网络通讯都需要借助Internet上的服务器,这就给那些具有大规模内部网络的用户造成了许多问题,如浪费网络资源、遭遇到网络攻击、传播的病毒、破坏防御系统等等。

由于互连网上的网络通讯工具给企业内部信息交流带来了不便,所以为了方便内部网络的用户之间的沟通,需要开发一个基于局域网的信息收发系统的即时通讯工具,实现在内部网络中进行信息的交流。

本课题设计主要针对局域网通讯而开发设计的,采用的是C/S构架,类似飞鸽传书系统,来实现聊天、文件传输功能,并借助一些网络通讯组件,成功的实现了在局域网上的即时通讯。

本论文的目标是设计一个类似飞鸽传输的局域网通信软件,并分析它在其领域的优势。

本设计以C编写,能在windows2000/net/xp等环境下运行。

设计共分为五大模块,分别是:

首先,介绍选题背景及意义和国内外研究现状;其次,介绍TCP/IP点对点协议技术,C/S架构和SOCKET网络编程技术;再次,对当前局域网文件传输进行需求分析并提出解决方案;然后,根据解决方案对系统进行设计;最后,对工作计划统计以及分析系统进行测试并得到测试结果。

关键词:

聊天;传输;socket;飞鸽传书;C/S结构

DesignandImplementationIPMessengerBasedonLAN

Abstract

Thenetworkcommunicationalreadydonotcalculatethenewthingsnow,butthemajoritynetworkcommunicationallneedtobesupportbytheserverontheInternet,thismaketheseuserhavethelarge-scaleinternalnetworkwhomanyproblems,suchaswastenetworkresources,beattackedbynetwork,disseminationvirus,destructiondefensesystemandsoon.Becausetheinterconnectionnetworkcommunicationfacilitiesontheinteriorcommunicationbroughtinconvenientlyfortheenterprise,inordertofacilitateinternalcommunicationbetweennetworkuser's,needstodeveloponebasedonthelocalofinstantmessageareanetworkinformationreceivinganddispatchingsysteminstantmessagefacilities,realizescarriesontheinformationwhichnetworktheexchange.Thistopicdesignmainlyaimsatthelocalareanetworkcommunicationtodevelopthedesign,usesistheC/Sskeleton,likeIPMessenger,forchatandfilestransmission.

LANagainstthetextchat,documentsandfolderstransmission,thedesignofafakeIPMessengerofLANsoftware,andanalyzeitintheirareasofadvantage.ThedesignisdevelopedbyCprogramitcanmakeinthecnvironmentofwindows2000/net/xpoftopicselection,intheenvironmentThedesignaltogetherdividesintofivebigmodules,respectivelyis:

First,introductionselectedtopicbackgroundandsignificanceanddomesticandforeignresearchpresentsituation;Second,introducestheTCP/IPpointtopointprotocoltechnology;C/Sconstructiontechniqueandsocktnetworkprogrammingtechnology;Third,carriesonthedemandofthecurrentlocalareanetworkfiletransfertoanalyzeandproposethesolution;Fourth,carriesonthedesignaccordingtothesolutiontothesystem;Fifth,statistictheworkplan,awalysandtestthesystemandobtainsthetestnesult.

Keywords:

Chat;transmission;socket;C/Sskeleton;IPMessenger

目录

论文总页数:

20页

1引言1

1.1课题背景1

1.2本课题主要研究背景1

1.3本课题主要研究思路和方法1

1.4研究项目的目的以及意义2

1.5WINSOCKET的寻址方式2

2系统需求分析2

2.1系统设计目标2

2.2系统总体需求分析3

2.3组织结构的分析3

2.3.1开发运行环境3

2.3.2系统开发语言4

3理论知识4

3.1C/S软件架构技术4

3.2用户数据报协议(UDP)4

3.3单播、广播、组播浅析5

4系统设计5

4.1文字聊天模块的整体构架5

4.2文件传输模块的主要流程图6

4.3系统的主要功能模块6

4.3.1文字聊天的主登录界面6

4.3.2文字聊天信息的封装9

4.3.3聊天信息的加锁10

4.3.4文件传输的界面12

4.3.5用户密封或加锁传输文件15

5系统测试17

5.1测试环境17

5.2测试结果17

结论17

参考文献18

致谢19

声明20

1引言

1.1课题背景

当时间走向21世纪,当今时代也由工业经济渐渐成为了知识经济、信息经济的时代。

信息的需求量的不停增加,促使了计算机通信的日新月异!

虽然网络的使用频率与使用的范围都越来越广泛,但是人们使用的网络的用途主要的还是只有两个:

(1).相互之间的沟通,

(2).资源共享。

局域网作为网络的一个重要组成部分,它不但用户与外界连接的枢纽,同时也是近距离用户之间沟通与资源共享的一个重要途径。

在这种情况下,如何使局域网内的用户便捷的勾通,以及快速的资源共享,也就成为了人们对网络研究的重点之一。

本系统仿飞鸽传输,是一个局域网内的通迅工具,主要通过Winsockt完成。

它据有的功能有:

(1)局域网内用户间简单的文字聊天功能;

(2)局域网内用户间相互的文件、文件夹传输。

1.2本课题主要研究背景

随着计算机和通讯技术的发展,计算机的网络化已经渗透到各个应用领域,尤其是以TCP/IP协议之间的网络互连发展很快,计算机应用系统的开发由传统的单机方式转向到了网络环境的开发。

大部分编程语言都提供了基于Windows Sockets网络编程接口的Winsocket控件,它使开发TCP/IP通讯变得简单方便。

网络之间进行数据通讯时,使用地址来标识网络中的计算机,有了地址以后,数据才会准确地发送到地址所指向的计算机。

TCP/IP协议使用IP地址为网络中计算机的标识,而且每台计算机的IP地址是唯一的,一般情况下,每台计算机运行的程序不止一个,因此要在应用程序中建立连接的话,还需要一个地址标识。

在TCP/IP协议书中使用端口(PORT)作为计算机上运行的应用程序的标识,因此TCP/IP协议中一个有效的网络地址包括IP地址和端口地址两个部分。

TCP/IP协议提供了两种计算机之间的通讯方式:

TCP方式和UDP方式。

TCP是一种面向连接的服务,在文件传输时会先行建立连接,通过链接提供双向、有序且无重复的数据流服务、以及流量控制、差错检测和纠错等服务,从而确保文件传输的正确性;UDP则是一种无连接的服务,它在传输文件时不会确保传输端的文件能够正确无误的传送到接收端,所以当使用UDP时,通常要自己作接收确认的工作。

1.3本课题主要研究思路和方法

本系统的开发采用基于winsocket的广播发送模式,进行文字聊天和文件、文件夹传输的设计与开发。

因此,本设计首先分析该系统的相关功能,结合本设计的相关要求写出需求分析;其次,综合运用以前所学的相关知识,选择所熟悉的开发工具进行本设计的开发;在设计中以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法;最后,在系统开发完毕后,进行调试和运行,做好调试和运行的相关记录。

1.4研究项目的目的以及意义

随着互联网技术的迅猛发展,网络给人们带来了很多便利,比如人们借助于网络进行相互交流变得更加方便。

聊天工具作为互联网中运用最为广泛的通信工具之一,如今都已被广大网民接受。

很多人都使用过飞鸽传书软件,飞鸽传书发展到现在已经具有了很多功能:

有文字聊天、文件、文件夹传输的基本功能,也有密封、加锁等较为复杂的功能。

本毕业设计的目的主要是为了检查使学生综合运用以前所学知识(包括以前所学的一些关于网络、编程、信息安全等知识)的能力,模拟局域网飞鸽传书软件,开发一个天系统软件,本毕业设计主要实现局域网内文字聊天及文件传输等功能。

1.5WinSocket的寻址方式

 因为Winsock要兼容多个协议,所以必须使用通用的寻址方式。

TCP/IP使用地址和端口号来指定一个地址,但是其它协议也许采用不同的形式。

如果Winsock强迫使用特定的寻址方式,添加其他协议就不大可能了。

在Winsock中,应用程序员通过SOCKADDR_IN结构来指定IP地址和端口号。

定义如下:

Structsockaddr_in{

shortsin_family;

u_shortsin_port;

structin_addrsin_addr;

harsin_zero[8];

};

应用程序可以使用inet_addr函数将一个小数点分隔的十进制IP地址字符串转化成由32位二进制数表示的IP地址。

inet_ntoa函数将一个网络字节顺序的32位IP地址转化字符串。

注意:

inet_addr返回的32位二进制数是用网络顺序存储的。

2系统需求分析

2.1系统设计目标

根据对飞鸽传输系统的调研,我认为本设计需要满足以下几个系统设计目标:

(1)实用性原则:

真正为局域网的实际工作服务,按照需求的轻重缓急,合理设计本系统。

(2)可靠性原则:

必须为用户提供安全的服务,尤其是要保证传输的稳定性。

(3)友好性原则:

使用本系统的用户相当一部分对计算机知识了解很少,所以系统操作上要求简单方便,便于用户掌握。

(4)可扩展性原则:

采用开放的标准和接口,便于系统向更大的规模和功能扩展。

2.2系统总体需求分析

根据用户需求,本系统分为两个子系统:

1:

局域网内简单文字聊天子系统,它是在局域网内选择相应的用户,以便对之发送文字信息,2:

文件、文件夹传输系统,它是在先把需要传输的文件、文件夹转换成相就的数据流传关,到了目的主机再由之还原。

本系统的文字聊天系统实现的功能类似于QQ用户之间的聊天。

在设计系统时,应根据简洁、流畅的特点安排布局,在编制程序时应充分考虑这一点传输的稳定、快捷,真正做到“简洁、高效、流畅、安全”的使用环境。

用户使用的过程为,先是用户登开启本软件,软件自动检索局域网的其它用户,并以之成为用户列表,让用户选择。

当用户发现所要连接的用户之后,双击该用户,则出现发送窗口。

用户用之来发送消息或者文件。

接收方可以选择接收或者拒绝相应的传输文件。

2.3组织结构的分析   

以下为组织结构图:

 

图1组织结构图

2.3.1开发运行环境

开发此系统所需的基本软、硬件环境为:

(1).Windows95、Windows98或WindowsNT/2000/XP;

(2).Pentium100及以上档次的IBMPC及其兼容机;

(3).128M以上内存措施;

(4).1G以上可用硬盘空间;

(5).VGA显示器;

以上的配置均要求为在同一局域网内的两台或两台以上。

2.3.2系统开发语言

本系统采用VC/VC++语言开发。

VC/VC++是前些年迅速发展和推广的一种计算机语言,近年来,已经相当的完善。

它主要特点有两个方面:

一是全面兼容C,二是支持面向对向的方法。

.

3理论知识

3.1C/S软件架构技术

C/S(Client/Server)结构,即大家熟知的客户机/服务器结构。

它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。

目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。

这也就是目前应用系统的发展方向。

传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。

由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。

3.2用户数据报协议(UDP)

UDP(UserDatagramProtocol):

用户数据包协议,它和TCP一样位于传输层,和IP协议配合使用,在传输数据时省去包头,但它不能提供数据包的重传,所以适合传输较短的文件。

由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。

这是通过使用UDP的“端口号”完成的。

源端口号标识了请求域名服务的本地机的应用程序,同时需要将所有由目的站生成的响应包都指定到源主机的这个端口上。

与TCP不同,UDP并不提供对IP协议的可靠机制、流控制以及错误恢复功能等。

由于UDP比较简单,UDP头包含很少的字节,比TCP负载消耗少,所以UDP适用于不需要TCP可靠机制的情形,比如,当高层协议或应用程序提供错误和流控制功能的时候。

UDP是传输层协议,服务于很多知名应用层协议,包括网络文件系统(NFS)、简单网络管理协议(SNMP)、域名系统(DNS)以及简单文件传输系统(TFTP)。

3.3单播、广播、组播浅析

硬件组播(multicasting)是一种多点投递的形式,它使用硬件技术,通过使用大量组播地址来通信。

当某一组机器需要通信时,选择一个组播地址,并配置好相应的网络接口硬件,识别组播地址,从而收到该组播地址上分组的拷贝。

广播(broadcasting)是多点投递的最普遍的形式,它向每一个目的站投递一个分组的拷贝。

它可以通过多个单次分组的投递完成,也可以通过单独的连接传递分组的拷贝,直到每个接收方均收到一个拷贝为止。

在多数网络中,用户是通过把分组分送给一个特殊保留的地址即广播地址(broadcastaddress)来进行广播投递,它的主要缺点是会耗费大量的主机资源和网络资源。

单播(unexacting)是指只有一个目的地的数据报传递。

从投递目的地的数量而言,单播和广播均可看作是组播的一个子集。

单播可以看作仅包括一台机器群组的组播;广播可以看作包含了所有机器群组的组播。

但从数据报的投递方式而言,单播、广播和组播还是有较大的区别。

4系统设计

本系统主要分为文字聊天和文件传书两大部分。

所以本论文将把系统分成两大模块来介绍。

4.1文字聊天模块的整体构架

本系统文字聊天是采用C/S结构,所以每个客户端也是作为服务器端的,当系统发送信息给局域网的用户,主要由单播模块和广播模块来实现,而其中的单播模块和用户信息模块是具有依赖性的,在接收信息的时候又有两个模块来完成,一是信息接收的模块,另一个是信息查看的模块。

由此可以看出本模块主要分为两模块:

发送模块和接收模块。

发送模块:

单播模块,广播模块,用户信息模块,信息记录模块接收模块:

接收信息模块,查看信息模块

综上所述,系统的架构图为:

 

图2系统结构图

4.2文件传输模块的主要流程图

由于本模块采用C/S架构故将系统运行载体分为两个部分:

客户端与服务器端。

文件传输需要建立有效的连接后,通过TCP/IP协议实现点对点的文件传输。

通信双方是通过三次握手建立连接,实现文字、文件传输,最后关闭套节字连接。

其传输的整个流程图如下:

图3结构流程图

4.3系统的主要功能模块

4.3.1文字聊天的主登录界面

由于系统的用户设计是针对的用户日常活动,而非专门从事计算机操作的人员,所以本系统力求界面友好、简单,以便给用户提供一个舒适的使用环境。

在文字聊天模块的主要目标是简捷,方便。

为了方便用户选取单个用户进行信息发送和查看在线用户的信息,所以设计了一个ListView来进行显示如图5,在ListView中包括了用户名、工作组、用户级数等。

当有用户打开本系统的时候将会向局域网中的所有用户发送一个握手信息来获取网络中的在线用户信息并添加到列表中显示出来,同时也把自己的网络资源信息发送给对方,使自己被添加到其他用户的列表中。

登录界面,如图4所示:

图4启动主界面

进行发送的,在发送时将会把信息发送给在局域网内部的所有用户包括自己。

选择用户并输入发送信息,单播发送的按钮为BitBtn2,主要是通过IdUDPServer和IdUDPClient组件来编写的,由client.SendBuffer语句来发送的,主要是对局域网内部的同一工作组用户发送信息。

广播发送的按钮为BitBtn3,主要是通过IdUDPServer和IdUDPClient组件来编写的,主要是使用了client.Broadcast来对信息,如图5所示:

图5用户选择图

其中主要的代码为:

voidTMsgApp:

:

InitWindow(void)

{

WNDCLASSwc;

HWNDhWnd;

charclass_name[MAX_PATH]=IPMSG_CLASS,*tok,*msg,*p;

ULONGnicAddr=0;

intport_no=atoi(cmdLine);

if(port_no==0)

port_no=IPMSG_DEFAULT_PORT;

if((tok=strchr(cmdLine,'/'))&&separate_token(tok,'',&p))

{

BOOLdiag=TRUE;

DWORDstatus=0xffffffff;

if(stricmp(tok,"/NIC")==0)//NIC{

if(tok=separate_token(NULL,'',&p))

nicAddr=ResolveAddr(tok);

}

elseif(stricmp(tok,"/MSG")==0)

{

MsgMngmsgMng(nicAddr,port_no);

ULONGcommand=IPMSG_SENDMSG|IPMSG_NOADDLISTOPT|IPMSG_NOLOGOPT,destAddr;

while((tok=separate_token(NULL,'',&p))!

=NULL&&*tok=='/'){

if(stricmp(tok,"/LOG")==0)

command&=~IPMSG_NOLOGOPT;

elseif(stricmp(tok,"/SEAL")==0)

command=IPMSG_SECRETOPT;

}

if((msg=separate_token(NULL,0,&p))!

=NULL)

{

diag=FALSE;

if((destAddr=ResolveAddr(tok))!

=NULL)

status=msgMng.Send(destAddr,htons(port_no),command,msg)?

0:

-1;

}

}

if(nicAddr==0)

{

if(diag)

MessageBox(0,"ipmsg.exe[portno][/MSG[/LOG][/SEAL]]\r\nipmsg.exe[portno][/NICnic_addr]",MSG_STR,MB_OK);

:

:

ExitProcess(status);

return;

}

}

4.3.2文字聊天信息的封装

封装是一种把多次聊天的的数据捆绑在一起,使这两者不受外界干扰和误用的机制.封装可被理解为一种用做保护的包装器,以防止代码和数据被包装器外部所定义的其他代码任意访问.对包装器内部代码与数据的访问通过一个明确定义的接口来控制.封装代码的好处是每个人都知道怎样访问代码,进而无需考虑实现细节就能直接使用它,同时不用担心不可预料的副作用.

用户密封只需选择seal选项,程序插件自动生成封装功能。

并且在聊天过程中,封装的过程仍在持续,聊天的内容是边封装数据包边传输。

密封发送信息接收界面,如图6所示

图6接收界面

在点击open后显示信息。

其中实现的主要代码为:

BOOLTApp:

:

PreProcMsg(MSG*msg)//forTranslateAccel&IsDialogMessage

{

for(HWNDhWnd=msg->hwnd;hWnd!

=NULL;hWnd=:

:

GetParent(hWnd))

{

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1